У меня есть приложение, которое представляет своего рода каталог предметов в ListView
.Список довольно длинный, поэтому я реализовал возможность Search
, например, такую:
<activity android:name=".ItemsOverview"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- enable the search dialog to send searches to ItemsSearch -->
<meta-data android:name="android.app.default_searchable"
android:value=".ItemsSearch" />
</activity>
...
...
<activity android:name=".ItemsSearch">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
ItemsSearch
, затем представляет те же ListView
, но содержит только элементы, которые соответствуют критериям поиска.
С этим связаны две фундаментальные проблемы:
ItemsSearch
является почти дубликатом ItemsOverview
(но с некоторыми улучшениями для возможностей поиска); ItemsSearch
накладывается ItemsOverview
таким образом, что если выполняется три или четыре поиска, для выхода требуется четыре или пять нажатий кнопки Назад.Не совсем желаемый эффект.:)
Я хотел бы, в некотором роде, завершить исходное действие, когда начинается второе действие, и, в идеале, объединить два класса (обзор и поиск) в один.Есть ли способ для моей активности обнаружить, что он уже запущен в другом процессе, и уничтожить этот другой процесс в начале?
Как только я пойму это, я, вероятно, пойму, как объединить эти два.Что делают другие, когда им нужно использовать отфильтрованный список?