片段中的静态字段

时间:2014-11-28 21:07:10

标签: android android-fragments

我有一个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);
}

}

1 个答案:

答案 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