6

我正在编写一个应用程序,遇到一个问题。我有三个活动 A、B 和 C。当我从活动 A 到 B 和 B 到 C 时,如果我按下设备上的菜单按钮。我的应用程序进入后台状态。当我重新打开应用程序时,它会显示 Activity C。我希望当我重新打开应用程序时,它应该显示 Activity A 而不是 Activity 堆栈中的任何其他活动。我已经完成了一些活动生命周期方法并尝试覆盖它。我已经覆盖了 onStart() ,onPause() 方法和完成活动 C 以及活动 B,我面临的问题是当我从活动 C 转到活动 D 活动时C 完成所有后台活动 nm 在活动 D 完成时无法返回活动 C。谁能帮助我如何在恢复应用程序时显示特定活动?提前谢谢。

这是我的 manifest.xml

<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application    
              android:icon="@drawable/icon"
              android:label="@string/app_name"
              android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >

    <activity   
        android:label="@string/app_name"
        android:name="com.buttonpay.Login"
        android:screenOrientation="portrait"
        android:clearTaskOnLaunch="true" >
        <intent-filter >
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


     <activity android:name=".ButtonPayActivity"
                android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                android:screenOrientation="portrait"/>    


    <!-- HomeTab Activity -->

            <activity android:name="com.buttonpay.home.Utilities"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>


            <activity android:name="com.buttonpay.home.Top_up"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>
            <activity android:name="com.buttonpay.home.HomeScreen"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>

            <activity android:name="com.buttonpay.home.MyAccount"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>
             <activity android:name="com.buttonpay.home.TransactionHistory"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>
              <activity android:name="com.buttonpay.home.TransactionDetailsActivity"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>
                <activity android:name="com.buttonpay.home.TransactionList"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>
               <activity android:name="com.buttonpay.home.BusinessSummaryActivity"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>
               <activity android:name=".home.MobileMoneyActivity"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>


     <!-- balance tab Activity -->
            <activity android:name="com.buttonpay.balance.BalanceTab"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        />



     <!-- Favouritetab Activity -->
             <activity android:name="com.buttonpay.favourite.FavouriteTab"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        />

  <!-- ComingSoon -->
<activity android:name="com.buttonpay.home.ComingSoon"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>

 <!-- Settings -->
<activity android:name="com.buttonpay.settings.SettingList"
                        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
                        android:screenOrientation="portrait"/>



</application>

4

1 回答 1

3

在清单中,在您的根活动上设置它(这是在您的应用程序中启动的第一个活动,具有 ACTION_MAIN 和 CATEGORY_LAUNCHER 的活动):

android:clearTaskOnLaunch="true"

你不需要做任何其他事情。没有覆盖生命周期方法。

编辑在一些经验实验后添加附加信息:

您需要确保您的根活动始终位于任务的活动堆栈中以使其工作。这意味着您不能调用finish()活动,直到用户真正想要退出您的应用程序(即:当他在您的根活动中按下 BACK 键时)。

在您的示例中,您有一个 LoginActivity、MenuActivity 和 DescriptionActivity,而 LoginActivity 是根活动。当 LoginActivity 启动 MenuActivity 时,它不能自行调用finish()。在这种情况下,当用户在 MenuActivity 中按下 BACK 键时,它将返回到 LoginActivity。如果这不是您想要的,那么您需要在已经启动 MenuActivity 的 LoginActivity 中设置一个标志,当onResume()被调用时,您可以检查该标志以确定您是否从 MenuActivity 返回,在这种情况下您可以马上打电话finish()

于 2012-08-22T11:46:02.367 回答