在使用 appcompat.v7 之前,我在 Actionbar 中实现了 SearchView 但是当我想将 SearchView 与支持库 v7 一起使用时,它会显示空异常
风格
<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 菜单项。这在 this blog post 中有所提及作为“新集成”下的最后一项。只需将您的 SearchView
声明替换为以下内容。
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
这里是 MenuItemCompat 的链接文档。
编辑:
我只是假设您使用的是最新版本的 AppCompat,它支持新的 Toolbar
小部件。
关于android - 使用 AppCompat 的 SearchView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26564960/