2012-11-14 7 views
10

この質問は私の元の質問と似ていましたが、ソリューションにアプローチするより良い方法があると思います。アクティビティがインテントセットで呼び出された後にgetIntent()がnullを返す方法

getIntent returns wrong intent when setIntent is followed by a rotation

基本的に、FragmentActivity延びている私のメイン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に電話してください。

インテントからデータを取得すると、次の呼び出しでgetIntentがnullを返すように、どのように設定できますか?それとも、インテントのデータを代わりにnullにするのが理にかなっていますか?

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

答えて

12

私はうまくいくと思われる解決策を見つけましたが、もっと良い方法があると思います。

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

私はsetIntentは、任意の使用ではないと思いますが、setData(null)はトリックを行うようです。

関連する問題