如何将搜索意图过滤器和android.app.searchable应用于所有活动?

时间:2014-06-14 07:29:12

标签: android android-intent searchview android-searchmanager

我的Android应用程序中有很多活动,需要使用SearchView实现ActionBar。

我最初只是将以下几行添加到我的SearchActivity中:

 <activity android:name=".activity.SearchActivity" android:launchMode="singleTop">
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/>
  </activity>

但是,searchManager.getSearchableInfo(getComponentName());null调用后,onCreateOptionsMenuAnotherActivity1返回了intent-filter

因此,我还将android.app.searchableAnotherActivity1元数据添加到AnotherActivity1,这适用于{{1}} SearchView。

但是我有很多这样的活动 - 我应该只为这些活动复制粘贴这个XML片段,还是有一些更优雅的解决方案我不知道?

1 个答案:

答案 0 :(得分:0)

嗯,我想我自己弄清楚了。

使用

searchManager.getSearchableInfo(new ComponentName(this, SearchActivity.class));

而不是

searchManager.getSearchableInfo(getComponentName());

然后我必须将intent-filtermeta-data仅应用于SearchActivity