2011-12-07 8 views
4

私は、Activitiesという2つのAndroidアプリケーションを持っています。通知からアクティビティBを実行して、アクティビティAを実行するように戻るボタン

Activity AにはContext.startActivity(Intent intent)を使用してActivity Bを起動するボタンがあります。

同じ方法でアクティビティを開くNotificationもあります。

この通知でBを開始して戻るボタンを押すと、Bが終了し、通常の場合と同じようにAが表示されません。

ヒストリスタックなしの通知から開始した場合、BAに戻すように強制できますか?

ソリューション

としてステファンポールLammertsma述べたように、最善の方法は、通知からAを開始し、ABで新しい意図を作成することです - onCreate()ではありません!

私はこれを少し掘ると私はAndroidManifestA活動のための新しいプロパティに設定した場合ことがわかった:

android:launchMode="singleTask" 

を我々はcheclすべき

onNewIntent(Intent intent) 

そして、そこと呼ばれるA活動に存在しますIntentに通知から渡された余分な値が含まれている場合は、新しいBを呼び出します。

は実際には瞬時に活動Bを呼び出すためのフラグを使用して通知から活動Aを開始することですこれを達成するために次の開発者;-)

答えて

4

エクストラバンドルにいくつかのフラグをつけた通知(アクティビティA)(Bの代わりに)を通知することをお勧めします。 AのonCreate()でフラグをチェックし、すぐにアクティビティBを起動します。これにより、Bを押すとAに戻ることが保証されます。

3

簡単な方法のためにあなたの両方、それに幸運をありがとうございました。

だから、あなたはちょうどあなたがあなたの通知に開始されている自分の意思に余分を置くために持っていて、この余分が存在する場合、アクティビティAに確認する必要があり、それが存在するならば、あなたは活動B.

アップデートを開始します。別私の意見では、あなたのアクティビティBのonPause()メソッドをオーバーライドしてそこにアクティビティAを呼び出すことになります。

1

おそらく最も良い解決策ではないかもしれませんが、 B、launchFromNotificationなどのように、インテントに余分なブール値を追加してください。
アクティビティBs onCreate()では、後で使用するためにブール値を保存します。
BackBackPressed()のアクティビティBsでは、ブール値をチェックできます。trueの場合は、finish()を呼び出す前にアクティビティAを起動します。

より良い解決策は、アクティビティAを通知から起動し、アクティビティBを直接起動することです。

関連する問題