У меня проблема с активностью навигации, поиск работает хорошо.
Иерархия действий выглядит так:
/ MyListActivityA -- ItemActivityA
MainActivity -- MyTabActivity -- MyListActivityB -- ItemActivityB
\ MyListActivityB -- ItemActivityC
Вкладки в TabActivity создаются с использованием Intents с MyListActivity .
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 .
В onCreate () MyListActivity проверяется намеренное действие. Если это
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 . Я не могу вернуться к MyTabActivity из-за параметра noHistory.
Есть ли какое-либо хорошее решение для использования поиска Android в TabActivity для каждого действия на вкладке соответственно?