Android Studio 1.3 RC 3
我試圖通過contiguration變化,保留我的無頭片段的狀態不保留其類成員。
旋轉的設備工作正常。但是,問題出在我的MainFragment.java
我startActivityResult(...)
隱式活動(打開gallary應用程序)來查看照片。
不保留其類成員,即使我已在RetainedFragment.java的onCreate()中設置了setRetainInstance(true)。
我也嘗試使用onSavedInstanceState
將mDataInt保存到捆綁包並從onActivityCreated
方法中檢索它。
是一個headless fragment
所以不包含任何UI,它只是用來保持和恢復狀態。
我無法理解的事情,旋轉變化工作正常。它只有當我開始一個新的隱式活動來啓動gallary應用程序。
我正在測試的類成員名爲mDataInt
,並且在實例化類時將初始值設置爲101。然後到2015年的onSavedInstanceState
保留該值,當RetainedFragment重新創建。 非常感謝您的任何建議,
public static class RetainedFragment extends Fragment {
private static final String TAG = RetainedFragment.class.getSimpleName();
private Integer mDataInt = 101;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* Ensure the data survives runtime configuration changes */
setRetainInstance(true);
if(savedInstanceState == null) {
Log.d(TAG, "onCreate savedInstanceState == null - dataInt: " + mDataInt);
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mDataInt = 2015;
Log.d(TAG, "onSavedInstanceState mDataInt: " + mDataInt);
outState.putInt("DATAINT_KEY", mDataInt);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.d(TAG, "onActivityCreated mDataint: " + mDataInt);
if(savedInstanceState != null) {
Log.d(TAG, "onActivityCreated savedInstanceState != null - dataInt: " + savedInstanceState.getInt("DATATINT_KEY"));
}
}
}