我有一个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而没有其他片段。任何帮助表示赞赏。
答案 0 :(得分:0)
找到解决方案。这是一个愚蠢的错误。片段onCreate()
在活动onCreate()
之前调用。所以我只是将代码引用到Fragment.onCreateView()
中的Activity。现在一切都很好:))