我有一个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/

10-08 23:21