2012-09-06 56 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我试过第一个版本 –

相关问题