ViewPager - FragmentStatePagerAdapter和处理轮换

时间:2017-04-23 10:42:53

标签: android android-fragments android-viewpager

我有一个ViewPager,其中包含Fragment个。 ViewPager的适配器为FragmentStatePagerAdapter

适配器的getItem方法。

@Override
public Fragment getItem(int position) {
    String text= dbHelper.getText(position);
    CustomFragment frg = new CustomFragment(text);
    return frg;
}

我正在适配器的getItem方法中初始化片段。

一切都很完美。

但是当方向发生变化时,不是恢复我初始化的片段,而是使用CustomFragment的默认构造函数创建CustomFragment。所以这会创建带有虚拟数据的片段。

这是什么原因? 如何恢复以前创建的片段?

1 个答案:

答案 0 :(得分:1)

初始化Fragment的理想方法是创建一个工厂方法,如:

public static CustomFragment newInstance(String text) {
    Bundle arguments = new Bundle();
    arguments.put("someText", text);

    CustomFragment fragment = new CustomFragment();
    fragment.setArguments(arguments);

    return fragment;
}

并在getArguments()方法中获取onCreate()的参数并处理它以初始化片段中您想要的任何内容。

这样,当在配置更改时重新创建片段时,参数将保持不变,并且Fragment在调用onCreate()方法时会自行处理。

如果您使用的是最新工具,您可能已经注意到了相同的lint警告。

相关问题