【问题标题】:SearchView using AppCompat使用 AppCompat 的 SearchView
【发布时间】:2014-12-21 07:08:24
【问题描述】:

在使用 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 才能设置查询监听器?

【问题讨论】:

  • 正如 Espen Riskedal 所说:“将 android:actionViewClass 更改为 app:actionViewClass”也很重要。

标签: android searchview android-5.0-lollipop


【解决方案1】:

您应该使用MenuItemCompat 中的静态方法来处理所有 AppCompat 菜单项。这在this blog post 中作为“新集成”下的最后一项提到。只需将您的 SearchView 声明替换为以下内容即可。

SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));

这是MenuItemCompat 文档的链接。

编辑: 我只是假设您使用的是最新版本的 AppCompat,它支持新的 Toolbar 小部件。

【讨论】:

【解决方案2】:

如果您将android:actionViewClass 更改为app:actionViewClass,您现有的代码将继续工作。

【讨论】:

    猜你喜欢
    • 2015-07-03
    • 2014-02-11
    • 1970-01-01
    • 2016-01-10
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    相关资源
    最近更新 更多