查看寻呼机 - 片段状态寻呼器适配器和处理旋转



我有一个ViewPager,里面有Fragments。ViewPager有一个适配器FragmentStatePagerAdapter

适配器的getItem方法。

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

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

一切都很完美。

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

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

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

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

并在onCreate()方法中获取带有getArguments()的参数并对其进行处理以初始化片段中所需的任何内容。

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

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

相关内容

最新更新