2011-10-17 18 views
0

私は、ユーザーが連絡先を選択し、onActivityResult()を使用して結果を返すことができるアクティビティを持っています。onActivityResult()が連絡先選択ツールから返された後にonRestoreInstanceStateが呼び出されない?

アクティビティが連絡先選択から返されたとき、私はonRestoreInstanceState()のバンドルからいくつかのコンテンツを取り出そうとしています。 onActivityResultが呼ばれた後でもonRestoreは...実行しない

私はここで

は私onRestoreです...それが実行されるかどうかを確認するためにそれをlog.eだとイマイチそれ

@Override 
    protected void onRestoreInstanceState(Bundle outState){ 
     super.onRestoreInstanceState(outState); 
     Log.e("SmsEditCreate", "Inside onRestore"); 
     mDbHelper.open(); 
     setRowIdFromIntent(); 
     populateField(); 
    } 

return onActivityResult()が呼び出されたときにonRestoreは呼び出されませんか?

この場合、別の方法がある場合はお知らせください。

答えて

2

onRestoreInstanceStateは、アクティビティが破棄された後で作成されている場合にのみ呼び出されます。それは別のアクティビティを開始した後に発生する可能性がありますが、必要でない場合は、Androidはあなたの古いアクティビティを可能な限り長く維持します。

あなたの仕事を行うのに適切な時間を探している場合は、アクティビティのライフサイクルが役に立つかもしれません。 http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle

+0

さて、私の質問の2番目の部分に。 onResume()のBundleから情報を引き出す必要があるとき、どうすればこの問題を回避できますか? –

+0

まあ、あなたがしようとしていることを投稿していないので、あなたの質問には本当に答えられません。あなたのアクティビティのインスタンスは、古いアクティビティを開始する前に使用されていたものと同じインスタンスになると私は言うことができます。したがって、onResume()のonSaveInstanceStateで保持しようとしていたアクティビティクラスのどのフィールドでも使用できます。つまり、フィールドmRowIdを使用するrowIdに設定すると、onResumeで直接mRowIdを使用できます。 onRestoreInstanceStateでは、バンドルからmRowIdを設定することもできます。 –

関連する問題