14

この質問は私の元の質問に似ていましたが、解決策にアプローチするより良い方法があると思います.

setIntent の後にローテーションが続くと、getIntent が間違ったインテントを返す

基本的に、ActivityextendsFragmentActivityである main には、 Fragment で Intent をこの Activity に渡すインスタンスが 2 つあります。

これは問題が発生しているコードです:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(...);

    if (getIntent() != null && getIntent().getData() != null) {
        String data = getIntent().getDataString();
        //setIntent(null);

これsetIntentは私の問題を解決する試みでしたが、うまくいきませんでした。

インテントとしてアクティビティに戻るリンクをクリックすると、次のフラグメントに移動し、電話を回転させると、2 つのフラグメント前に渡されたインテントが再び表示されますgetIntent

では、Intent からデータを取得するときに、次の呼び出しでgetIntentnull が返されるように設定するにはどうすればよいでしょうか? または、代わりに Intent のデータを null にすることは理にかなっていますか?

これを処理するために SharedPreferences の情報を更新しないようにしています。

4

1 に答える 1

14

うまくいくように見える解決策を見つけましたが、もっと良い方法があると思います。

    if (getIntent() != null && getIntent().getData() != null) {
        String data = getIntent().getDataString();
        getIntent().setData(null);
        setIntent(null);

setIntentは何の役にも立たないと思いますが、setData(null)うまくいくようです。

于 2012-11-14T03:06:56.683 に答える