1

我正在开发一款应该支持手机和平板电脑的应用程序。 在这个应用程序中,我使用的是android的片段。如何从片段中删除菜单回压android

现在,应用程序的流程是一样

MainActivity - >片段1 - > 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); 
} 

现在,它的工作电话布局完全相同,但是当它来到平板电脑出现问题。

这是我的ScreenShots。

片段1 enter image description here

片段1和片段2组合压制9 keybord(平板模式)时。 enter image description here

,最后当我再次按下9回过头来电话中查看它显示我额外的菜单项。

enter image description here

我只是标志着一个图像额外的菜单项。那么,为什么这个我来了,我该如何解决它?

+0

我猜你添加菜单组平板电脑模式下你的碎片都可见。是这样吗? – Panther 2014-12-19 05:49:26

+0

yes.bcz我需要在平板模式下显示这两个片段。 但是,当我回到移动模式,菜单项不应该在那里 – 2014-12-19 05:50:41

+0

我想这发生在一个真正的设备有一个较小的机会。然而,你应该重写'onConfigurationChanged'并且调用'invalidateOptionsMenu()'或'supportInvalidateOptionsMenu()'这是一个合适的解决方案 – Panther 2014-12-19 05:55:42

回答

0

你需要隐藏这样的菜单组在fragment 1

@Override 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setHasOptionsMenu(true); 
} 

它会做出onPrepareOptionsMenu一个电话,你可以隐藏fragment2

@Override 
public void onPrepareOptionsMenu(Menu menu) { 
     super.onPrepareOptionsMenu(menu); 
     menu.setGroupVisible(0, false); 
} 
+0

中设置'android:configChanges =“orientation | screenSize”'我试过这个解决方案,但它是隐藏mainactivity的菜单 – 2014-12-19 06:08:49

+0

它不显示mainactivity的菜单也 – 2014-12-19 06:10:20

+0

看你需要保持'fragment's'菜单在一个单独的'菜单组中'得到它吗?'fragment1'' fragment2'和'fraagmentActivity'的菜单项必须驻留在不同的'menugroup'中。 – 2014-12-19 06:12:30