2013-05-03 9 views
10

onSaveInstanceState()を使用してArrayListのメンバー変数を保存し、メインアクティビティのonCreate()メソッドで復元しています。これはほとんどの場合、画面を回転させるなどの場合に機能しますが、新しいアクティビティを開き、「戻る」ボタン(戻るボタンではなく)を使用してメイン画面に戻ると、新しいメインアクティビティが作成されたようです状態バンドルはonCreate()です。「アップ」ボタンを使用した場合のAndroidの状態の復元

アップボタンを押すと、元のアクティビティの元のインスタンスにはonDestroy()メソッドが呼び出されていますが、これは私には意味がないことを確認しました。これは、バックボタンを押したかのように既存のアクティビティを再開します。新しいものを作成するのではなく、

新しいアクティビティで元のアクティビティを強制的に復元したり、既存のアクティビティを再開する方法はありますか?

Intent i = new Intent(this, MainScreenActivity.class); 
    i.setFlags(Intent.FLAG_CLEAR_TOP); 
startActivity(i); 
    finish(); 

このコードは、ボタンを押すことで呼び出す必要があります。

+0

おかげで、私はすぐにこのポストの後にバスケットボールの事故があったし、私は背中に開始されるまで、それについて忘れてしまいました今日のプロジェクト! :S – archangel

答えて

13

はマニフェストで、singleTopにメインアクティビティの起動モードを設定してみてください:迅速な回答のため

<activity android:name="activityName" android:launchMode="singleTop" ... /> 
+0

これは上のボタンを押してもアクティビティが破棄されないことを意味するはずですsavedInstanceStateが必要です - システムがいくつかのリソースを取り戻すためにあなたのアクティビティを破壊すると(あなたが離れて移動した後)、それはsISバンドルを使用します。 ICS +のデバッグ設定で 'do not keep activities'をオンにして、 – FunkTheMonk

+0

のように振る舞いました。 – archangel

0

は、あなたが使用しようとしました。

+0

私はこの方法を試してみましたが、FLAG_CLEAR_TOPの説明から理解していますが、うまくいきませんでした – archangel

関連する問題