SearchView using AppCompat



在使用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,则现有代码将继续工作。

相关内容

  • 没有找到相关文章

最新更新