我有一个活动A,当我按下工具栏项时,它会使用startActivity(intent)启动活动B。每当我按下后退按钮或向上导航图标时,它就会关闭我的应用程序。我相信这是因为我在父活动中使用了launchMode="singleTop"(我使用这个是因为我有一个搜索视图和一个可搜索的配置,因为我不想在上启动另一个活动实例进行搜索)。所以问题是:在不关闭应用程序的情况下,如何使用向上导航和后退按钮从子活动(B)返回到父活动(A)?我已经搜索过了,在NewIntent()上找到了一些关于它的信息。如果这是我的解决方案,我应该如何正确使用它?
这是我的清单文件:
<activity
android:name="com.example.fernando.inspectionrover.MainActivity"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
<activity
android:name="com.example.fernando.inspectionrover.BluetoothSettingsActivity"
android:parentActivityName="com.example.fernando.inspectionrover.MainActivity"
android:screenOrientation="landscape">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.example.fernando.inspectionrover.MainActivity" />
以下是如何开始我的新活动:
switch (id) {
case R.id.bluetoothActivity:
Intent switchActivity = new Intent(this, BluetoothSettingsActivity.class);
startActivity(switchActivity);
Log.i(LIFE_CYCLE, "Switching from " + getLocalClassName() + " to Bluetooth Setting Activity");
finish();
break;
}
Single Top
意味着,如果您启动了一个已经在顶部的活动,那么它将不会在恢复时再次创建。
您的反向导航关闭应用程序的原因是,您在开始新活动后立即调用finish()
。这意味着您不再需要该活动,因此它将从堆栈中删除。如果您返回activityB,应用程序将关闭,因为没有什么可返回的(您调用finish()
还记得吗?
我可能只是在寻找最简单的答案,但我认为主要问题是在开始新活动后调用finish。这将调用调用活动的destroy,并将其从活动堆栈中删除。