16

getIntent() を使用してバンドルされた情報を読み取るアプリに取り組んでいます。バンドル フィールドの 1 つを null に設定して、その後の再開時に変更されたインテントが受信されるようにしたいのですが、getIntent() から同じインテントを取得し続けます。戻るキーを押した後、新しいインテントが生成されることに気付きましたが、それ以外ではそうではありません。

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

ただし、Activity が再び再開すると、getInt() は null ではなく値を返します。バンドル内の Int フィールドをクリアする方法がわかりません。

更新が試みられました:

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

これも機能しません。getIntent() の意図は変更できないようです。

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

4

2 に答える 2

21

onNewIntent()そこでエクストラ をオーバーライドして変更できます。これがそのためのドキュメントです。このメソッドの後、あなたのonResume()意志が呼び出され、それがあなたが求めているものだと思います

于 2012-12-11T23:18:48.687 に答える
0

私の場合、私の問題は、選択した意図フラグのエラーでした。私の動作していないコードは次のとおりです。

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

今、私は

 notificationIntent.setFlags((PendingIntent.FLAG_UPDATE_CURRENT));

ええ、最善の解決策ではありませんが、うまくいきます

于 2016-06-07T14:32:14.390 に答える