所以,我有这个应用程序有 4 个不同的活动:
- A是主要活动,带有三个按钮来启动B,C和D(我认为人们习惯将这些称为子活动)。
- 每个活动都有自己的布局,但我相信这与这里无关。
我想做的是大多数应用程序的标准行为。那是:
- 我首先启动应用程序并查看活动 A。
- 然后我按下一个按钮,例如 C,并显示活动 C。
- 然后我按下后退按钮,活动 A 再次显示。
我的应用程序正确执行了第 1 点和第 2 点,但在第 3 点应用程序消失了。
按钮的 onClick 方法是这样的:
startActivity(new Intent(this,C.class));
没有任何活动覆盖 onBackPressed 方法。
这是我的清单文件的(部分):
<activity android:name=".A" android:label="A" android:launchMode="standard" android:theme="@android:style/Theme.NoTitleBar" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".B" android:label="B" android:launchMode="standard" android:theme="@android:style/Theme.NoTitleBar" android:screenOrientation="portrait"/>
<activity android:name=".C" android:label="C" android:launchMode="standard" android:theme="@android:style/Theme.NoTitleBar" android:screenOrientation="portrait"/>
<activity android:name=".D" android:label="D" android:launchMode="standard" android:theme="@android:style/Theme.NoTitleBar" android:screenOrientation="portrait"/>
我从我所做的调试工作中知道,在调用按钮的 onClick 方法之后调用 A.onDestroy() 。基于此信息,我认为,当然我可能是错的,活动 A 出于某种原因被操作系统从历史堆栈中删除。
现在我知道这种问题已经在 stackoverflow 上解决了,但是我已经尝试了所有我能找到的建议,但没有一个奏效。我想解释一下我自己的情况。