2016-02-18 40 views
2

我使用的是Fragment使用startActivityForResult()開始新Activity這是還沒有準備好,我得到的結果(Bundle)onActivityResult()method.Since onActivityResult()onResume之前調用( )。我想確保,我正確保存/保存Bundle,以便當 onResume()被調用時,我得到保存/保存的結果以執行進一步的操作。通onActivityResult()數據相同的片段

有什麼不同的方式來實現這一點。我嘗試使用getArguments()/ setArguments(),但似乎不是正確的方式來實現這一點。

+0

這是什麼意思? –

+0

爲什麼你不把結果保存在簡單的類字段(你的片段類) –

+0

我想嘗試正確的方法,使用變量或方法也可能導致崩潰,因爲在使用成員變量時Fragment本身可能不可用。 –

回答

2

試試這個

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == MY_REQUEST) { 
     // Make sure the request was successful 
     if (resultCode == RESULT_OK) { 
      mResultBundle = data.getExtras(); //mResultBundle is in fragment 
      //scope 
     } 
    } 
} 

@Override 
protected void onResume(){ 
    super.onResume(); 
    if(mResultBundle != null){ 
     // process saved bundle from activity result here 

     // don't forget to set it back to null once you are done 
     mResultBundle = null; 
    } 
} 
+0

我想嘗試正確的方法,使用變量或方法也可能導致崩潰,因爲在使用成員變量時Fragment本身可能不可用。 –

+0

每當調用onActivityResult方法。將會有一個片段實例。在該實例中,您將結果指定爲成員變量。你認爲在這種情況下會出現什麼問題? –

+0

可能沒有片段實例,因爲onActivityResult()在片段準備好之前被調用。閱讀:http://steveliles.github.io/android_activity_lifecycle_gotcha.html –

相關問題