片段寻呼适配器无法恢复列表片段属性



我正在开发一个由3个片段组成的Android应用程序;其中一个将是ListFragment,其内容将取决于其他片段上发生的事情。我使用 ViewPager 对象让用户在片段之间切换;这是它的适配器类:

private class SwypePagerAdapter extends FragmentPagerAdapter{
    private Fragment[] tabFragments; 
    public SwypePagerAdapter(FragmentManager fm) {
        super(fm);
        tabFragments=new Fragment[NUMBER_OF_TABS];
        tabFragments[0]= Fragment.instantiate(StatCalculatorActivity.this, InsertFrag.class.getName());
        tabFragments[1]= Fragment.instantiate(StatCalculatorActivity.this, ResultFrag.class.getName());
        tabFragments[2]= Fragment.instantiate(StatCalculatorActivity.this, ValuesFrag.class.getName());
    }
    @Override
    public Fragment getItem(int position) {
        return tabFragments[position];
    }
    @Override
    public int getCount() {
        return NUMBER_OF_TABS;
    }
}

一切都运行良好,直到活动被销毁然后重新创建。在此之后,listFragment 看起来是锁定的,它不会更新其数据,直到我销毁并重新创建此片段上的活动。这是怎么回事?如何恢复它?

更新:我不认为我解释了我真正的意思。看起来在我销毁并重新创建活动后,碎片不再是以前的样子;就像旧的重叠了新的,它们之间再也无法交流......就像我失去了他们的参考,但他们仍然在那里......

如果你想在不破坏的情况下保持数据原样,你可以在你的PagerAdapter中这样评论

@Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // TODO Auto-generated method stub
        //super.destroyItem(container, position, object);
    }
片段

随活动一起创建和销毁,除非将它们设置为保留。为了维护您的数据,我推荐以下两种方法之一:

  • 使其可序列化
  • 将其存储在保留的缓存片段中,您可以在活动的 onCreate 上连接到该片段

第二种方法可以通过制作一个片段并在片段的onCreate中添加以下内容来实现,并在旋转时销毁活动之前将数据传入

@Override
public void onCreate(Bundle savedInstanceState) {
    setRetainInstance(true);
    super.onCreate(savedInstanceState);
}

最新更新