android - 使用 AppCompat 的 SearchView

标签 android searchview android-5.0-lollipop

在使用 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/

相关文章:

android - android 中的 ListView 计数与适配器计数

android - SearchView 编辑文本始终为空

android - 使用两个点值的向量在 Android 5.0.1 和 5.0.2 上崩溃?

android - Android Lollipop CardView 上的波纹效果

android - Android 中某些相机分辨率的不同捕获输出大小

android - SecurityException,无法显式添加 : myPakcageName 类型的帐户

java - 如何解析以下JSON

android - 如何在android布局中添加unityplayer作为 subview ?

android - SearchView过滤ListView

android - SearchView 一如既往地显示