2015-07-21 37 views
0
Android Studio 1.3 RC 3 

你好,setretaininstance(真)使用無頭片段

我試圖通過contiguration變化,保留我的無頭片段​​的狀態不保留其類成員。

旋轉的設備工作正常。但是,問題出在我的MainFragment.javastartActivityResult(...)隱式活動(打開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")); 
     } 
    } 
} 

回答

0

我發現爲什麼這個有問題的原因,我想在這裏發表任何人誰擁有這個一些想法聽到。

在開發者選項下,我啓用了Don't keep activities我禁用了此選項。現在應用程序按預期工作

相關問題