0

我正在我的活动 onCreate 方法中创建并附加一个片段:

FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
mSlateFragment = new SlateFragment();
fragmentTransaction.add(R.id.root, mSlateFragment);
fragmentTransaction.commit();

之后,我还将搜索栏设置为默认值,为此,我必须访问刚刚创建的 mSlateFragment 对象:

mSlateFragment.mSlate.setProperty(33);

然而,这个调用会引发我的应用程序崩溃。在 onStart 中进行此调用可解决崩溃问题,但存在问题,因为我只设置默认值并且不想在每次我的活动进入前台时重置它们。

我试图访问的 mSlate 对象是在我的片段的 onCreateView 中创建的(它是一个视图)。

是否有关于 FragmentActivity 及其片段的生命周期如何交织的信息?有没有办法让我的电话工作?在其片段的 oncreate 中创建我的视图似乎也无济于事。

4

1 回答 1

0

我会在你的缓存中缓存默认值,SlateFragment原因有两个:

  1. 您不再依赖 Fragments 生命周期,并且可以在 Fragment 创建后立即设置它们
  2. onCreateView()每次显示 Fragment 时都会调用(例如,在屏幕旋转之后),因此您将失去默认值,因为 View 是新创建的。
于 2013-03-29T23:37:11.110 回答