onCreate()没有被调用方向更改

时间:2014-04-10 05:27:04

标签: android navigation-drawer oncreate android-orientation

我有一个MainActivty,其中包含导航抽屉。导航抽屉代码非常接近official documentation。现在MainActivty开始时加载FragmentA。导航抽屉应该只能从FragmentA获得。到目前为止一切顺利,一切正常。

现在,我点击MainActivity识别的屏幕上的内容,然后用FragmentA替换FragmentB。当我在FragmentB时,在FragmentB.onCreate()我呼叫以下内容:

 setHasOptionsMenu(true);
((MainActivity)getActivity()).mDrawerToggle.setDrawerIndicatorEnabled(false); //ActionBarDrawerToggle mDrawerToggle is a public class variable in MainActivity

这是为了用后退箭头替换操作栏中的抽屉克拉。这也很好。

现在,此时,如果我更改屏幕方向,则不会调用MainActivty.onCreate()。仍然会调用FragmentB.onCreate()mDrawerToggle为空,因为未调用MainActivity.onCreate()。因此应用程序因NullPointerException而崩溃。

我没有使用android:configChanges="orientation"来进行活动。我不知道如何解决这个问题,因为Android文档中的示例代码只有一个Activity而没有其他片段。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

找到解决方案。这是一个愚蠢的错误。片段onCreate()在活动onCreate()之前调用。所以我只是将代码引用到Fragment.onCreateView()中的Activity。现在一切都很好:))