2012-12-11 17 views
8

私はgetIntent()を使ってバンドルされた情報を読み取るアプリケーションに取り組んでいます。バンドルフィールドの1つをnullに設定したいので、その後の再開時に変更されたインテントが受け取られますが、getIntent()から同じインテントを返すようにします。私は、バックキーが押された後で新しい意図が生成されたことに気付きましたが、そうでなければそれはありません。Android getIntent()は毎回onResume()で同じインテントを返します。バンドル内のintフィールドをクリアする方法は?

intent.getExtras().getInt("FLAG_FIELD") returns 1 
intent.getExtras().setString("FLAG_FIELD", null); 

アクティビティが再び再開すると、getInt()はnullの代わりに値を返します。バンドル内のIntフィールドをクリアする方法よりも確実です。ちょうど試してみました

更新:

intent.getExtras().putInt("FLAG_FIELD, -1); 

また、これは動作しません。 getIntent()からのインテントのように見えるのは変更できません。

更新:アクティビティが表示される前にonResume()が連続して3回デバッガで呼び出されますか?だから私がここにフラグを設定しても、resume()コールが実際の表示の前に最後のものであるかどうかわからないので、状態を変えるのは難しいようです。

+0

を働くあなたがこれを使用する関数を投稿することができますので、我々はいくつかを持っていますコンテキスト? – codeMagic

+0

私はちょっと混乱しますが、 'intent.putExtra()'を使用するときに値を変更する必要があります。次にインテントを取得するときに変更されます。 – codeMagic

+0

追加する唯一のものは、私がチェックインしているgetIntent )フィールドをonResume()に設定し、onResumeのフラグをクリアします。本当の質問はあなたがgetIntent()のバンドルを変更することができますか、それとも変わらないのでしょうか?それは変わらないように見えます。 –

答えて

9

onNewIntent()を無効にして、そこの追加情報を変更することができます。 Hereはそのドキュメントです。この方法の後に、onResume()が呼び出され、あなたの後ろにあると思います。

+0

もう一つの問題は、onResumeが何回か呼び出されるように見えることです。たとえば、フラグをオン/オフすることは、そのフラグが複数回実行されるために発生しません。 –

+0

コードの多くを見ることなく、私はあなたにはあまり話せませんが、[Android Activity LifeCycle](http://developer.android.com/reference/)でアクティビティが開始した後にonResume()が呼び出されることがわかりますandroid/app/Activity.html#ActivityLifecycle)あなたはそれを上書きし、データを処理するコードを入れなければなりませんが、必要なのは...カウンタ、フラグなどです。あなたが何をしているのかを知らずに言うのは難しい – codeMagic

+0

ありがとう。私は、追加の呼び出しはonResumeが過度に呼び出されるのではなく、コードの他の部分から来たものであることを発見しました。 –

0

私の場合は、選択したインテントフラグでエラーが発生しました。 私がコードをして働いていません。

notificationIntent.setFlags((Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK)); 

は今、私はそうではなく、最善の解決策

notificationIntent.setFlags((PendingIntent.FLAG_UPDATE_CURRENT)); 

で解決したが、それは

関連する問題