在Activity的onCreate中创建的片段何时可​​访问?

时间:2013-03-29 23:28:28

标签: android android-fragments android-lifecycle

我正在创造&在我的活动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中创建我的视图似乎也没有帮助。

1 个答案:

答案 0 :(得分:0)

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

  1. 您不再依赖Fragments生命周期,可以在创建Fragment后立即设置它们
  2. 每次显示片段时都会调用
  3. onCreateView()(例如在屏幕旋转之后),因此您将丢失默认值,因为视图是新创建的。