我有一个FragmentActivity,我从中调用一个片段,在其中我有一个静态字段和ExpandableListView。
按下存在或后退按钮后,我重新打开应用程序,静态字段的值仍然存在(ExpandableListView的形状也相同)。这是我的预期。不幸的是,经过一段时间(但并非总是),当我回到应用程序时,静态字段具有其默认值而不是最新的,我认为这意味着Fragment类再次被实例化。但ExpandableListView与最初离开应用程序之前的情况一样。
为什么会发生这种行为?
顺便说一下,我这样做是因为我想记住在ExpandableListView中扩展了哪一组项目。
这是调用片段的寻呼机适配器。
public class CollectionPagerAdapter extends FragmentStatePagerAdapter {
private Local local;
private Online online;
public CollectionPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
switch (i) {
case 0:
local = new Local();
return local;
case 1:
online = new Online();
return online;
}
return null;
}
@Override
public int getCount() {
return 2;
}
public void updateLocal(String update) {
local.updateLocal(update);
}
}
答案 0 :(得分:1)
我的猜测是,FragmentStatePagerAdapter会将保存的信息保留在内存中一段时间后再删除它们,因此在数据重新初始化后经过较长时间后返回时,您将获得默认值。如果要存储数据,可以使用共享首选项(对于较小的数据)。
共享偏好 - http://developer.android.com/guide/topics/data/data-storage.html#pref
SQL数据库 - https://developer.android.com/guide/topics/data/data-storage.html#db