我使用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为空,或者我做错了什么?
答案 0 :(得分:4)
如何将数组存储在片段中?
我假设通过“将数组存储在片段中”表示“保留片段在配置更改中使用的数组”。如果是这样的话:
选项#1:将其放入片段的数据成员中,并在该片段上调用setRetainInstance(true)
。
选项#2:如果数组属于Bundle
支持的数据类型,则覆盖onSaveInstanceState()
,将数据放入Bundle
,并使用其他方法检索该数据在配置更改后创建的新片段实例中(例如,onCreateView()
)。
选项#3:如果数组确实代表了应用程序的数据模型,请将其保存在新旧片段实例可以访问的中心持久点中,例如数据库或文件。