1

私には 2 つの活動がActivity1ありActivity2ます。Activity1最初に開始するランチャー アクティビティです。ホームボタンを押してactivity2、すべてのアプリからアプリをもう一度開くと、開いていますActivity1。ホームボタンを押した時に開いていたのと同じアクティビティを開きたいです。の状態を保存する必要がありますactivity2が、方法がわかりません。

これこれを見ましたが、これを行う方法について明確な全体像がわかりませんでした。Android初心者なので教えてください。

4

2 に答える 2

4

「ホーム」ボタンを押すと、アクティビティが に移動しonPause()ます。

個人的にはonPause()、ホームボタンが押されたときだけでなく、他の状況も処理できるメソッドをオーバーライドすることをお勧めします。

あなたの場合、それは関連しているだけonPause()なので、状態を内部/外部ストレージonResume()に入れてみることができます。SharedPreferences

いう:

onPause()メソッドで、次のようにします。

// Use Shared Preferences to save data
SharedPreferences previewSizePref = getSharedPreferences("PREF",MODE_PRIVATE);
SharedPreferences.Editor prefEditor = previewSizePref.edit();
prefEditor.putInt("x", somethingA);
prefEditor.putInt("y", somethingB);
prefEditor.commit();

onResume()で、保存されたデータを次のように取得します。

SharedPreferences previewSizePref = getSharedPreferences("PREF",MODE_PRIVATE);
if (previewSizePref.contains("x") && previewSizePref.contains("y")) {
    //your saved data exists, do something
} else {
    // handle the circumstances that the saved data doesn't exist
}

状態を保存しonPause()て復元するにonResume()は、次の回答をご覧ください。

onPause でのアクティビティ状態の保存

また、SharedPreferences については、API ドキュメント: Data Storage - Shared Preferencesを参照してください。

于 2012-10-30T11:39:34.693 に答える
0

あなたが説明していることは、Android の動作の標準である必要があります。説明したとおりに動作しない場合は、この動作を別の場所、おそらくマニフェストで上書きした可能性があります。

新しい Android アプリケーションを作成し、アクティビティ A をランチャー、アクティビティ B を 2 番目のページとする単純な 2 ページのアプリを作成すると、マニフェストは次のようになり、アプリは説明した動作を表示します。

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".ActivityA"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".ActivityB"
        android:label="@string/title_activity_main" >
    </activity>
</application>

マニフェストがこれに似ていることを再確認してください。アクティビティ B にはフラグがなく、マニフェストに存在するという単なる宣言です。

于 2012-10-30T11:48:08.230 に答える