9

私のアプリケーションには2つのアクティビティがあり、次の順序で開始します。

HOME > A > B

ここで、HOMEを押して、もう一度「A」を起動します。「A」の上にアクティビティ「B」を表示したいのですが、代わりに「A」を取得します。これにより、アクティビティスタックがクリアされます。

マニフェスト:

<activity android:name=".activity.A" android:label="A" android:alwaysRetainTaskState="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

<activity android:name=".activity.B" android:label="B">
    <intent-filter>
    </intent-filter>
</activity>

私は何をすべきか?

4

3 に答える 3

10

私は何が悪いのか理解しました...

設定は正しいのですが、Eclipseからデバッグ用のアプリケーションを起動しました。これが問題でした。

ケース#1。

Debug > A > B > HOME > A
Get: A (stack is cleared)

ケース#2。

Debug > A > BACK > A > B > HOME > A
Get: B (stack preserved)

ケース#3。

A > B > HOME > A
Get: B (stack preserved)
于 2010-01-14T00:43:13.663 に答える
2

これはAndroidの既知の問題であることがわかりました。これは、ここここで公式に追跡されています。

彼らは(チェックしていませんでしたが)ADT Eclipseプラグインの0.9.6リリースで修正されたと言っていますが、アプリケーションOTAのアップグレード中に実際のデバイスでこれを見ることができます。少なくともこれは、Android 1.6、2.0.1、2.1、および2.2で発生します。

この問題の回避策を作成しました。こちらをご覧ください。

于 2010-11-18T19:02:54.413 に答える
1

それほど複雑ではありません。マニフェストを操作するだけです。

AndroidManifest.xm

<activity
     android:name=".MainActivity"
     android:alwaysRetainTaskState="true"
     android:exported="true"
     .
     .
     .

ここで「android:exported」と「android:alwaysRetainTaskState」について読んでください:

android:exported

android:alwaysRetainTaskState

于 2016-08-20T12:16:20.647 に答える