6

アプリケーションを作成していますn1つの問題で立ち往生しています.3つのアクティビティA、B、Cがあります。アクティビティAからB、BからCに移動し、デバイスのメニューボタンを押すと、アプリケーションがバックグラウンド状態になります。アプリケーションを再度開くと、アクティビティCが表示されます。アプリケーションを再度開くと、アクティビティスタックの他のアクティビティではなくアクティビティAが表示されます。いくつかのアクティビティライフサイクルメソッドを実行し、それをオーバーライドしようとしました.onStart()、onPause()メソッド、finshアクティビティ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"

他に何もする必要はありません。ライフサイクルメソッドのオーバーライドはありません。

編集いくつかの経験的な実験の後に追加情報を追加します。

これを機能させるには、ルートアクティビティが常にタスクのアクティビティスタックにあることを確認する必要があります。これは、ユーザーが実際にアプリケーションを終了するまで(つまり、ルートアクティビティでBACKキーを押したときfinish()、ルートアクティビティを呼び出すことができないことを意味します。

この例では、LoginActivity、MenuActivity、およびDescriptionActivityがあり、LoginActivityはルートアクティビティです。LoginActivityがMenuActivityを起動するとfinish()、それ自体を呼び出すことはできません。この場合、ユーザーがMenuActivityでBACKキーを押すと、LoginActivityに戻ります。これが希望しない場合は、LoginActivityにすでにMenuActivityを起動したフラグを設定する必要があります。onResume()呼び出されたときに、そのフラグをチェックして、MenuActivityから戻っているかどうかを判断できます。その場合は次のことができます。すぐに電話してfinish()ください。

于 2012-08-22T11:46:02.367 に答える