我有一个应用程序,它在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
,这样如果完成三次或四次搜索,则需要四次或五次按“后退”按钮才能退出。不太理想的效果。 :)我希望以某种方式在第二个Activity开始时结束原始Activity,理想情况下,将两个类(Overview和Search)合并为一个。有没有办法让我的Activity检测到它已经在另一个进程中运行,并在开始时杀死其他进程?
一旦我理解了这一点,我就可以弄清楚如何将两者结合起来。其他人在需要使用过滤列表时会怎么做?
答案 0 :(得分:3)
如果我理解,您是否希望清除活动后退堆栈。在调用搜索活动时使用活动标记。
Intent intent = new Intent(this, Search.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
答案 1 :(得分:1)
在搜索开始时结束旧活动新活动在旧活动中提供完成()并调用新活动。
Intent intent = new (Intent(MainActivity.this,GPSActivity.class);
startActivityForResult(intent, ACTIVITY_GPS);
finish();
在此我们可以开始新的活动GPS活动并完成MainActivity。