【发布时间】:2014-11-12 14:12:58
【问题描述】:
我们称它们为 Fragment A 和 B。Fragment B 只是 A 的详细视图,它会在单击 Fragment A 中的按钮时替换 Fragment A。
替换代码:
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.fragment_container, new DetailFragment());
transaction.addToBackStack(null);
transaction.commit();
当我现在在 Fragment B 中旋转一次屏幕并按下 Back 时,旧的 Fragment A 会毫无问题地恢复(它会使用 savedInstanceState Bundle 在 onActivityCreated 中恢复它的状态)。
现在进入有趣的部分......
当我在 Fragment B 中多次旋转屏幕并按 Back 时,我收到 NullPointerException,因为 onActivityCreated 中的 int[] data = savedInstanceState.getIntArray(STATE_DATA); 返回 null。
如何解决此问题?我想到的唯一其他方法是通过永久存储(首选项或数据库),但这似乎非常不适合用例。
编辑/附加信息:捆绑包本身不是空的,它只是空的
【问题讨论】:
标签: android android-fragments android-lifecycle