2016-07-05 40 views
0

FLAG_ACTIVITY_REORDER_TO_FRONTを使用してアクティビティAを開始し、Intent intent = getIntent();を呼び出すと、FLAG_ACTIVITY_REORDER_TO_FRONTフラグで作成されたものではなく、アクティビティの最初の作成に使用されたインテントが取得されます。Android REORDER_TO_FRONTユーザーの新規インテント

インテントのエクストラに基づいて表示を変更したいと考えています。新しく作成されたインテントを取得するか、古いインテントのエクストラを変更する方法はありますか?

編集:要求された例テントのAと

スタート活動AとエクストラA - >別の活動に行くX - アクティビティAで今すぐテントB(FLAG_ACTIVITY_REORDER_TO_FRONT)とエクストラB

と>コールアクティビティA私はgetIntent()と呼ぶときインテントBを取得したいが、インテントAはいつも得意である。AからBへエクストラを変更するだけでも大丈夫だろう

+0

私は存在する他のインテントフラグを見ており、FLAG_ACTIVITY_RESET_TASK_IF_NEEDEDは有望です。これは暗闇の中での一発ですが、今私の開発マシンにはないからです:https://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_BROUGHT_TO_FRONT –

+0

動作を変更しないようです。私はまだ最初の創造からの意図を得ています。 – AljoSt

+0

あなたはどんなふうに正しい行動をしているのか説明できますか?おそらく、アクティビティ 'A'、 'B'、 'C​​'などとそれらの間に必要なフローを使って例を挙げるともっと明確になります。 –

答えて

1

これは解決策だと思う。アクティビティAをフラグFLAG_ACTIVITY_CLEAR_TOPで開始すると、アクティビティA(この場合はアクティビティX)の上にバックスタック上のものが破棄され、新しいインテントでアクティビティAが開始されます。私は私のマシンでこれを試して、それは働いた。

Backstackが "X - A"のように見えるようにアクティビティXをしたい場合は、アクティビティAのonNewIntent()をオーバーライドして新しいインテントをキャプチャして設定し、FLAG_ACTIVITY_REORDER_TO_FRONTを続けてアクティビティを開始します。 " - > X - > X - > ... - > A X":

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 
    setIntent(intent); 
    // Parse intent info both here and in onCreate()! 
} 

はちょうどあなたがこれを行うと、活動Xとあなたのbackstackの間を行き来ならば、次のようになりますのでご注意しますなぜなら、Xはバックスタック上で冷たくなり、Aはちょうど正面に移動し続けるからです。

+0

2番目のオプションのために行って、完璧に、ありがとう! – AljoSt

関連する問題