android-ListFragment setRetainInstance(true);不起作用
作者:互联网
我用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,android 来源: https://codeday.me/bug/20191031/1979412.html