Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 方向更改时未调用onCreate()_Android_Navigation Drawer_Oncreate_Android Orientation - Fatal编程技术网

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())
来编辑
操作栏。一旦有了许多碎片,就可以通过执行上述方法来清理这些碎片。