当屏幕方向改变时,Fragment的onCreateOptionsMenu方法没有被调用

3
我有一个包含多个片段的视图页面活动。当我打开选项菜单时,它会将特定片段中的菜单项添加到选项菜单中。我正在使用android 4.2并具有android:configChanges="orientation",由于没有添加screensize,因此在方向更改时将创建活动,这是我想要的。
当我打开选项菜单时,所有菜单(包括片段菜单项)都显示出来。但是,如果我在显示选项菜单时旋转设备,则只显示活动的选项菜单项。我检查了原因,发现是因为片段的onCreateOptionsMenu未在更改方向时被调用。如何在更改方向时将片段选项菜单项添加到已显示的选项菜单中?
3个回答

4

编辑:在Android O版本中,supportInvalidateOptionsMenu已被弃用,请直接使用invalidateOptionsMenu()

没错。当设备配置发生变化时,Android将触发onConfigurationChanged

重写该方法并调用supportInvalidateOptionsMenu();


谢谢回复。我正在使用Activity,并且在FragmentActivity中有supportInvalidateOptionsMenu。我在activity和fragment的onConfigurationChanged和onResume中调用了invalidateOptionsMenu。但是在方向更改时,它没有将fragment菜单项添加到已打开的选项菜单中。 - anujprashar
supportInvalidateOptionsMenu()现在已经被弃用了。请参考https://developer.android.com/reference/android/support/v4/app/FragmentActivity.html#supportInvalidateOptionsMenu()。 - fdermishin

1
通过在我的Fragment类的onResume中调用setMenuVisibility(true);来完成。

1
我用以下调用修复了它:

setHasOptionsMenu(true)

在Fragment的onCreateView方法中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接