2012-09-06 93 views
3

我使用ListFragmentListFragment setRetainInstance(true);不起作用

setRetainInstance(true);不工作,我不知道爲什麼

savedInstanceState == NULL

我的消息來源

public class Fragment_Left extends ListFragment { 

     @Override 
     public void onAttach(Activity activity) { 
      super.onAttach(activity); 
      Log.d(LOG_TAG, "Fragment1 onAttach"); 
     } 

     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      Log.d(LOG_TAG, "Fragment1 onCreate"); 
     } 

     @Override 
     public void onActivityCreated(Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState); 

      setRetainInstance(true); 

     } 

     @Override 
     public void onListItemClick(ListView l, View v, int position, long id) { 
      getListAdapter().getItem(position); 

     } 



     public void onSaveInstanceState(Bundle state) { 
       super.onSaveInstanceState(state); 
       Log.i(LOG_TAG, "onSaveInstanceState()"); 


      } 


} 

public class Fragment_Left extends ListFragment { 
     private ArrayList<Menu_item> menu_list; ..... 

    @Override 
     public void onActivityCreated(Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState); 

      setRetainInstance(true); 
menu_list = new ArrayList<Menu_item>();...... 

,但之後我轉身屏幕menu_list爲空,或者我做錯了什麼?

+1

「不起作用」對您的症狀是完全無用的描述。 「savedInstanceState == null」 - 與'saveInstanceState(true)'無關。 – CommonsWare

+0

當我使用setRetainInstance(true); onActivityCreated(Bundle savedInstanceState) - savedInstanceState - 非空..或者我錯了嗎? –

+1

對不起,我在第一條評論中有一個錯字。 'savedInstanceState'並不嚴格依賴於'setRetainInstance(true)'。 'setRetainInstance(true)'表示實際的'Fragment'對象在配置更改中保留,所以您的數據成員保持不變。 – CommonsWare

回答

4

如何在一個片段中存儲數組?

我假設通過「將數組存儲在一個片段中」,您的意思是「通過配置更改保留片段使用的數組」。如果是這樣的話:

選項#1:將其放入片段的數據成員中,並在該片段上調用setRetainInstance(true)

選項#2:如果陣列是受Bundle支持的數據類型的,重寫onSaveInstanceState(),就把數據在Bundle,並檢索在配置改變之後創建的新片段的實例的其它方法的數據(例如,onCreateView())。選項#3:如果數組確實代表了應用程序的數據模型,請將其保存在舊的和新的片段實例可以訪問的中央持久點中,如數據庫或文件。

+0

http://stackoverflow.com/a/12302769/1568164我試過第一個版本 –

相關問題