我有一个带有导航抽屉的Activity(MainActivity),每次选择一个部分(比如说我有两个:标签和频道)时,我都会用appropriete Fragment更改主容器。我想为每个广告添加自定义搜索活动,我可以这样做吗?
我已经使用一个片段执行了此操作,但默认的可搜索配置附加到活动而不是片段。那么我怎样才能为我所拥有的每一个片段设置一个不同的可搜索配置?
.MainActivity
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main"
android:theme="@style/AppTheme.NoActionBar" >
<meta-data android:name="android.app.default_searchable"
android:value=".TagSearchActivity" />
</activity>
我的搜索活动
<activity android:name=".TagSearchActivity">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable_tag"/>
</activity>
<activity android:name=".model.ChannelSearchActivity">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable_channel"/>
</activity>
要从片段中获取搜索服务,请使用此代码
SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
MenuItem searchItem = menu.findItem(R.id.search_tag);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
// Assumes current activity is the searchable activity
searchView.setSearchableInfo(searchManager.getSearchableInfo(getActivity().getComponentName()));
searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default