在使用appcompat.v7之前,我在Actionbar中实现了SearchView但是当我想使用带有支持库v7的SearchView时,它显示空异常
时尚
<item android:id="@+id/action_search"
android:title="@string/action_search"
android:icon="@drawable/ic_action_search"
app:showAsAction="always|collapseActionView"
android:actionViewClass="android.support.v7.widget.SearchView" />
Java类:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setOnQueryTextListener(this);
return super.onCreateOptionsMenu(menu);
}
我的问题是如何在onCreateOptionsMenu中声明SearchView以便能够设置查询侦听器?
您应该使用MenuItemCompat
中的静态方法来处理所有AppCompat菜单项。在这篇博客文章中,这是"新集成"下的最后一项。只需将SearchView
声明替换为以下内容即可。
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
这是MenuItemCompat文档的链接。
编辑:我只是假设您使用的是最新版本的AppCompat,并支持新的Toolbar
小部件。
如果将android:actionViewClass
更改为app:actionViewClass
,则现有代码将继续工作。