2017-06-22 5 views
0

まず第一に私はthis articleを読んでいますが、私にとってはやや複雑です。必要なのは、onBackPressed()オーバーライドで必要なアクティビティ(バックスタックに存在する場合はナビゲートするか、そうでない場合はインテントで起動する)に移動することだけです。私はスタック または何か他のスタックを管理する必要がありますか?もしそうなら、どのように?単純な方法は何もない場合は?カスタマイズ戻るナビゲーション

PS:私はあなたがこのbackstackから最初のアクティビティを起動するか、それがbackstackに存在しない場合は、新規に作成されます第二アクティビティのonBackPressed()メソッドをオーバーライドし、AndroidManifest.xmlであなたの最初の活動にandroid:launchMode="singleInstance"を追加する必要がありますアクションバー

+0

正確に何を知りたいですか?スタック上の以前のアクティビティに戻る方法は? – AppPhil

+0

@AppPhilバックナビゲーションの既定のアクション(以前のアクティビティに移動する)は必要ありません。状況に応じて別の場所に移動する必要があります。 – sasan

+0

次に、onBackPressed()メソッドをオーバーライドする必要があります。ここでは、super.onBackPressed()を呼び出さない(以前のアクティビティには行かない)。あなたのonBackPressed()では、あなたが望む別のアクティビティを開始することができます。 – AppPhil

答えて

1

解決しよう:

Intent.FLAG_ACTIVITY_REORDER_TO_FRONT 

文句を言わない私たちが望む活動の新しいインスタンスを作成して、ちょうど持って来る:私達はちょうどにテントフラグを設定、フロントに(既存の)活動を持参したい場合は、mentioned in this answerとして、コメントによるとそれは正面。これは、その上に複数のアクティビティがある場合に便利です。

1

を使用してはいけません。

+0

のように再開したいと思いますか? – sasan

+0

はい。バックスタックに1つのアクティビティインスタンスしか存在しません。 –

1

必要に応じてstartActivityForResult()を使用します。同じアクティビティの新しいインスタンスを作成しないでください。つまり、前のアクティビティに戻る場合は、このアクティビティからfinish()に電話するだけです。

Understand different launchmodes

上記のリンクで説明したように、singleInstance launchModeは難しいかもしれないと問題が発生することがあります。

+0

最初のアクティビティでstartActivityForResult()を使用した後、2番目のアクティビティのナビゲーションから別のアクティビティに移動する方法を次に示します。 – sasan

+0

'startActivity()'を使ってください。第3アクティビティを押したときに最初に戻る場合は、2番目のアクティビティで 'startActvity()'を呼び出すときに 'finish()'を呼び出します。 – dustblue

関連する問題