如何结束旧的活动,当搜索开始新的活动



我有一个应用程序,它在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,但只包含符合搜索条件的项。

这里有两个基本问题:

  1. ItemsSearch几乎是ItemsOverview的复制品(但对搜索功能进行了一些增强);
  2. ItemsSearch覆盖ItemsOverview,这样如果完成了三到四次搜索,则需要按四到五次后退按钮才能退出。效果不太理想。:)

我想以某种方式,在第二个活动开始时结束原始活动,理想情况下,将两个类(Overview和Search)合并为一个。是否有一种方法可以让我的活动检测到它已经在另一个进程中运行,并在开始时杀死其他进程?

一旦我明白了这一点,我就可能知道如何将两者结合起来。当其他人需要使用过滤列表时,他们会怎么做?

如果我理解,你想清除活动返回堆栈。当你调用你的搜索活动时使用活动标志。

Intent intent = new Intent(this, Search.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);

这是关于activity back stack的开发者页面

要在搜索开始时结束旧Activity,在旧Activity中调用finish()方法并调用新Activity。 Intent intent = new (Intent(MainActivity.this,GPSActivity.class); startActivityForResult(intent, ACTIVITY_GPS);
finish();

在这里,我们可以启动新的活动GPSActivity,并完成MainActivity。

相关内容

  • 没有找到相关文章

最新更新