Android 方向更改时未调用onCreate()
我有一个Android 方向更改时未调用onCreate(),android,navigation-drawer,oncreate,android-orientation,Android,Navigation Drawer,Oncreate,Android Orientation,我有一个main活动,它由一个导航抽屉组成。导航抽屉代码非常接近。现在,启动时,main活动加载FragmentA。导航抽屉应该只能从FragmentA中使用。到目前为止一切正常 现在我点击屏幕上的某个内容,main活动识别该内容,并用FragmentB替换FragmentA。当我在FragmentB上时,在FragmentB.onCreate()中调用以下命令: setHasOptionsMenu(true); ((MainActivity)getActivity()).mDrawerTog
main活动
,它由一个导航抽屉组成。导航抽屉代码非常接近。现在,启动时,main活动加载FragmentA
。导航抽屉应该只能从FragmentA
中使用。到目前为止一切正常
现在我点击屏幕上的某个内容,main活动
识别该内容,并用FragmentB
替换FragmentA
。当我在FragmentB
上时,在FragmentB.onCreate()
中调用以下命令:
setHasOptionsMenu(true);
((MainActivity)getActivity()).mDrawerToggle.setDrawerIndicatorEnabled(false); //ActionBarDrawerToggle mDrawerToggle is a public class variable in MainActivity
这是为了将操作栏中的抽屉克拉替换为后箭头。这也很好用
现在,如果我更改屏幕方向,则不会调用mainActivity.onCreate()
。FragmentB.onCreate()
仍被调用,而mDrawerToggle
为空,因为未调用main活动.onCreate()
。因此,应用程序因NullPointerException
而崩溃
我没有在活动中使用:android:configChanges=“orientation”
。我不知道如何解决这个问题,因为Android文档中的示例代码只有一个活动,没有其他片段。感谢您的帮助 找到了解决办法。这是一个愚蠢的错误。在活动的onCreate()
之前调用片段onCreate()
。所以我只是将引用活动的代码放在片段中。onCreateView()
。现在一切都好了:)提示:当你想让你的片段
更改操作栏
时,只需在提交片段事务
之前调用片段切换到.sethasOptions菜单(true)
,然后调用无效操作菜单()
。覆盖onCreateOptions菜单()
将在片段中起作用,就像一个活动一样。嗨,不知道覆盖onCreateOptions菜单会有什么帮助。你能详细说明一下吗?我并不是说这对你目前的问题有帮助,如果是这样的话,我不会给出答案。但是您似乎认为必须调用((MainActivity)getActivity())
来编辑操作栏。一旦有了许多碎片,就可以通过执行上述方法来清理这些碎片。