所以,我有一个片段 - 片段 A - 它包含一个对象 - 对象 O - 用于设置 TextViews 和其他元素。为了实例化片段,我使用了一个静态方法 A.getInstance(O)。对象 O 是可序列化的,因此我可以使用 instance.setArguments 等通过 Bundle 将其发送到片段 A 的新实例。
我在 A 的 onCreate 方法中检索 O,并在 onViewCreated 中使用 O 设置字段。直到这里一切正常。在我用另一个片段(片段 B)替换A 并从 B 导航回 A 后,参数 Bundle 不再包含对象 O,我得到 NullPointerException。Bundle 本身不为 null,但不包含 O。
我使用这种方法来替换片段:
public void replaceCurrentFragment(Fragment fragment) {
FragmentTransaction fragmentTransaction = context.getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frame, fragment).addToBackStack(null).commit();
}
片段 A 也使用上述方法显示。
我究竟做错了什么?