我该如何使用Back Stack来允许使用后退按钮?

时间:2012-02-28 16:13:13

标签: android android-activity subactivity

所以,我有这个应用程序有4个不同的活动:

  • A是主要活动,有三个按钮可以启动B,C和D(我认为人们会将这些作为子活动引用)。
  • 每个活动都有自己的布局,但我认为这不相关 这里。

我想要做的是大多数应用的标准行为。那就是:

  1. 我首先启动应用程序并查看活动A.
  2. 然后我按下按钮C,例如,显示活动C.
  3. 然后我按下后退按钮,再次显示活动A.
  4. 我的应用正确地执行了第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上解决了,但是我已经尝试了所有我能找到的建议而且都没有用。 我想解释一下我自己的情况。

1 个答案:

答案 0 :(得分:0)

当然我应该做错事。

我重写了onWindowFocusChanged方法并销毁了那里的活动,所以它当然是从堆栈中删除的。

我很抱歉浪费你的时间@stefan和@colegu。