更改方向后,如果我在列表中选择一个项目,我的 viewpager Activity (列表/详细信息类型)将重新创建并崩溃。
我不想用所有细节来打扰您(存在空指针异常,因为在 onCreateView() 中引用的 TextView 为空)。 我的问题是:ViewPager 如何在不调用 onCreateView() 的情况下显示 2 个页面,每个页面都有一个 fragment ?
为什么在启动应用程序后还没有打开设备就可以正常工作?
我只有 2 页/fragment 。但是我看到调试器在重新创建此 Activity 时创建了 4 个 fragment 。您知道为什么以及在哪里记录了这一点吗?
有什么解决办法吗?在此先感谢您的帮助。我在这里迷路了,因为我自己不控制 fragment ,viewpager 控制。
==========
更新:请在下面找到其他请求的信息
public class DetailFragment extends Fragment {
TextView mDetailTV;
// Retrieve the data to display from the parent activity
private String getData() {
ViewPagerActivity activity = (ViewPagerActivity)getActivity();
return( activity.detailArray[activity.mPosition] );
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_detail_fragment, container, false);
mDetailTV = (TextView)view.findViewById(R.id.detailTV);
displayDetail(getData());
return view;
}
// Display data
void displayDetail(String data) {
mDetailTV.setText(data);
}
并且列表和详细信息 fragment 被实例化并像这样传递给寻呼机适配器:
mListFragment = new ListFragmentt();
mDetailFragment = new DetailFragment();
mPagerAdapter = new MFragmentPagerAdapter(getSupportFragmentManager(), mListFragment, mDetailFragment);
此外,列表/详细信息中的数据来自经典的 Skakespeare 示例,所以我怀疑我的三星 S4 内存不足。
最佳答案
我通过删除 FragmentActivity 父类(super class)的 onSaveInstanceState 调用解决了我的问题,如下所示:
protected void FragmentActivity(Bundle outState) {
但我仍然不明白 FragmentActivity 的父类(super class)中发生了什么。只是凭直觉猜测成功了。我不明白它背后的理论。如果有人可以尝试解释一下,那就太好了。
关于android - 配置更改后未在 viewpager 中调用 Fragment.onCreateView(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22275848/