不同的菜单为不同的片段

时间:2014-02-11 14:32:44

标签: android android-fragments menu

我的活动有2个片段 一次可见1个片段,每个片段都有不同的选项菜单。

我可以通过两种不同的方式实现这种行为。

1 - 我可以通过在每个朋友中调用onCreateOptionsMenu为每个片段添加不同的菜单 2 - 我在活动级别只能有一个菜单,可以选择在onPrepareOptionsMenu

中显示特定选项

我想知道的是:
哪个是实现此功能的首选方式?
推荐什么?

2 个答案:

答案 0 :(得分:7)

希望这有帮助

  

将项目添加到操作栏

     

您的片段可以通过实现onCreateOptionsMenu()将菜单项提供给活动的“选项”菜单(以及操作栏)。但是,为了使此方法接收调用,您必须在onCreate()期间调用setHasOptionsMenu(),以指示该片段要将项添加到Options菜单(否则,片段将不会接收对onCreateOptionsMenu()的调用)。

     

然后,您从片段添加到“选项菜单”的任何项目都会附加到现有菜单项目中。当选择菜单项时,片段还接收对onOptionsItemSelected()的回调。

     

您还可以在片段布局中注册视图,以通过调用registerForContextMenu()来提供上下文菜单。当用户打开上下文菜单时,片段将接收对onCreateContextMenu()的调用。当用户选择一个项目时,该片段接收对onContextItemSelected()的调用。

http://developer.android.com/guide/components/fragments.html

答案 1 :(得分:4)

我会遵循第一个选项,因为每个片段都有一个专用的资源菜单看起来更干净,并且还降低了为了维护可见内容和不可见内容而具有的代码复杂性(如果您要通过{{1}并且有代码隐藏和显示不同的菜单。

如果你的片段中有一些动作,那么你可以创建一个基础片段类,每个片段都会扩展。