我有一个FragmentActivity,从中可以调用一个Fragment,其中有一个静态字段和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);
}
}
最佳答案
我的猜测是,FragmentStatePagerAdapter在将保存的信息删除之前将其保留在内存中一段时间,因此,由于数据已被重新初始化,因此经过较长时间返回时,您将获得默认值。如果要存储数据,则可以使用共享首选项(对于较小的数据)。
共享首选项-http://developer.android.com/guide/topics/data/data-storage.html#pref
SQL数据库-https://developer.android.com/guide/topics/data/data-storage.html#db
关于android - fragment 中的静态字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27195891/