我用ListFragment
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为空,或者我做错了什么?
解决方法:
how do I store an array in a fragment?
我假设“在片段中存储阵列”的意思是“保留整个配置更改中片段使用的阵列”.如果是这样的话:
选项#1:将其放入片段的数据成员中,然后对该片段调用setRetainInstance(true).
选项#2:如果数组是Bundle支持的数据类型,则覆盖onSaveInstanceState(),将数据放入Bundle,然后在配置更改后创建的新片段实例中以其他方法检索该数据(例如, onCreateVIEw()).
选项#3:如果该数组确实代表您的应用程序的数据模型,则将其保存在旧的和新的片段实例可以访问的中央持久位置中,例如数据库或文件.
总结以上是内存溢出为你收集整理的android-ListFragment setRetainInstance(true);不起作用全部内容,希望文章能够帮你解决android-ListFragment setRetainInstance(true);不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)