【发布时间】:2014-12-19 05:46:56
【问题描述】:
我正在开发一个应同时支持手机和平板电脑的应用程序。 在这个应用程序中,我使用的是来自 android 的片段。
现在应用的流程是这样的
MainActivity --> Fragment1 --> Fragment2
在这个应用程序中,我想要一个仅在 Fragment2 中显示的菜单项以及活动的菜单项。
所以我尝试了一种解决方案,例如在 MainActivity 和 Fragment2 中添加全局菜单项,用 Fragment2 特定的菜单替换整个 MainActivity 的菜单。
setHasOptionsMenu(true);
在 onCreateView 中,并实现这个方法。
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.menu_f, menu);
super.onCreateOptionsMenu(menu,inflater);
}
现在它在手机布局上工作得很好,但是当它涉及到平板电脑时就会出现问题。
这是我的截图。
片段 1
Fragment 1 和 Fragment 2 在键盘(平板模式)中按 9 时的组合。
最后,当我再次按 9 回到 pHone 视图时,它显示了额外的菜单项。
我刚刚在 Image 中标记了一个额外的菜单项。那我为什么要来,我该如何解决呢?
【问题讨论】:
-
我猜在平板模式下你的两个片段都是可见的。是这样吗??
-
yes.bcz 我需要在平板模式下显示两个片段。但是当我回到移动模式时,菜单项不应该在那里
-
我猜这发生在真实设备上的可能性较小。但是,您应该覆盖
onConfigurationChanged并调用invalidateOptionsMenu()或supportInvalidateOptionsMenu()哪个合适 -
首先我尝试为片段中的不同提议实现 onConfigurationChanged() 方法。但它没有调用,不知道为什么:(
-
对于
onConfigurationChanged没有被调用,你必须在清单文件中设置android:configChanges="orientation|screenSize"
标签: android android-fragments android-actionbar menuitem fragment-backstack