我的活动导航有问题,搜索效果很好。
活动层次结构如下所示:
/ MyListActivityA -- ItemActivityA
MainActivity -- MyTabActivity -- MyListActivityB -- ItemActivityB
\ MyListActivityB -- ItemActivityC
TabActivity中的选项卡是使用带有MyListActivity的Intents创建的。
MyListActivities在清单中声明如下:
<activity
android:name=".views.OrderListView">
<intent-filter>
<action
android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable_orders" />
</activity>
每个MyListActivity都有自己的 SearchRecentSuggestionsProvider。
第一个解决的问题
当在任何MyListActivity上调用搜索时,我得到了MyTabActivity之外的活动。因此实现了重定向到MyTabActivity。
在MyListActivity的 onCreate() 中检查意图操作。如果它是
Intent.ACTION_SEARCH
然后启动 TabActivity 并完成当前,如下所示:
if(Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
intent.setClass(context, MyTabActivity.class);
intent.setAction(MyTabActivity.ACTION_SEARCH_PROXY);
Bundle appData = intent.getBundleExtra(SearchManager.APP_DATA);
if(appData != null) {
intent.putExtras(appData);
}
intent.putExtra(Constants.ACTIVITY_TYPE, activityType);
intent.putExtra(ActivityTabView.EXTRA_SEARCH_QUERY, query);
context.startActivity(intent);
context.finish();
}
当MyListActivity找到
ActivityTabView.EXTRA_SEARCH_QUERY
它在列表上进行搜索查询。并且问题解决了。
第二个解决的问题
单击“返回”按钮清除搜索查询 - 没关系。但是再次单击“返回”会显示过去的搜索。
这就是为什么我把 noHistory 放到MyTabActivity:
<activity
android:name=".views.MyTabActivity"
android:noHistory="true">
</activity>
第三个未解决的问题
现在,例如,从MyListActivityA转到ItemActivityA并单击“返回”重定向到MainActivity。由于 noHistory 参数,我无法返回MyTabActivity 。
有没有什么好的解决方案可以分别在 TabActivity 中为选项卡中的每个活动使用 Android 搜索?