2012-03-24 14 views
2

私は2つのアクティビティを含むアプリを持っています:A1とA2。私は、アプリケーションを実行すると、A1活動を開きます。その後、ボタンを押してA2を開きます(startActivityForResult(intent、0)を使用します)。それから私がBackを押すとA1に戻ります。全て大丈夫。戻るボタンは前のアクティビティに切り替わらず、Androidアプリを終了します

私がA2の活動に入っていて、他のアプリケーションに切り替えるとそして私のアプリに戻ってきたら、戻るを押して、アプリケーションはA1の活動に切り替えるのではなく終了します。 このような状況を防ぐにはどうすればよいですか?

A1からA2を呼び出すコード:AndroidManifest.xmlに設定

@Override 
public void onClick(View v) { 
    Intent intent = new Intent(getApplicationContext(), A2.class); 
    startActivityForResult(intent, 0); 
} 

宣言:あなたの活動で

<activity 
    android:name="A1" 
    android:launchMode="singleInstance" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > 
</activity> 

<activity 
    android:name="A2" 
    android:launchMode="singleInstance" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > 
</activity> 
+0

マニフェストファイル、少なくともA1とA2を宣言する部分は投稿できますか? –

+0

AndroidManifest.xmlで投稿を更新しました – gflower

答えて

1

オーバー乗るバックボタンをして、必要取り扱うものは何でも...

しかし、あなたの場合、A2がの場合は、 startActivityFroResult()でA1から始める場合、A1は常にアクティビティスタックトレースに残る必要があります。これは、A1をアクティブにした後、A1を押して戻る必要があります。使用法。

+0

別のアプリに切り替えて戻すときに、スタック内のA1アクティビティを保存するにはどうすればよいですか? – gflower

+0

あなたはあなたがA1 –

+0

からstartingActivity A2のどこにコードを掲載することができますか?それはかなり単純です – gflower

1

A2経由で呼び出しているときに、this.finish();またはfinish();タグのいずれかを呼び出していますか?

また、onPause()onResume()の方法で作業することもできます。 OPで提供されるコードがなければ、その答えは少し推測に基づいています。私が推測に間違っている場合、正しいことをしてください。 :-)

また、いくつかのコードでOPを更新してください。また、Activity's Life Cycleについても読むことができます。

EDIT:この問題は、ここ1:Android is killing my application whenever startactivityforresult is calledに似ているようです。再び、アクティビティライフサイクルの一部であるアクティビティ状態を保存することに変わりはありません。

+0

私はA2を呼び出すときにfinish()を使用しません。私は投稿を更新しました。コードは単純です。 – gflower

+0

@gflower:私は投稿を更新しました。新しいリンクはあなたの問題と類似しています。それを見てください。 –

0

マニフェストでsingleInstancesingleTaskに変更してみてください。 singleInstanceを使用すると、Androidは新しいインスタンスをあなたのタスク(つまり、アクティビティバックスタック)に起動しません。つまり、ルートアクティビティがOSによって破壊された場合、A1のonCreateを呼び出して再作成しません。

Tasks and Back Stack documentの詳細は"Defining Launch Modes"です。一度A1が破壊されます

注意、あなたはすべてのその状態を失っているだろう、あなたはおそらく、あなたがonCreateであなたに渡されるBundleを保存することができますonSaveInstanceStateを、実装したいです。

+0

unfortunatelly launchModeを 'singleTask'や' standard'に変更しても役に立ちません – gflower

+0

その場合、A1の 'onCreate'にロギングを追加して呼び出されているかどうか確認します。おそらく 'onDestroy'を実装して、ログメッセージを追加していつ破壊されたのかを確認することもできます。 –

関連する問題