不同片段使用不同菜单

8
我有一个活动,其中包含两个片段。
每次只有一个片段可见,每个片段都有不同的选项菜单。

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

1- 我可以在每个片段中调用 onCreateOptionsMenu 来添加不同的菜单。
2- 我可以在活动级别上仅有一个菜单,并在 onPrepareOptionsMenu 中选择显示特定的选项。

我想知道的是:
哪种方法更好地实现此功能?
有什么推荐的吗?

2个回答

7

希望这可以帮到您

向操作栏添加项目

通过实现onCreateOptionsMenu(),您的片段可以向活动的选项菜单(以及因此而来的操作栏)贡献菜单项。但是,为了使该方法接收调用,您必须在onCreate()期间调用setHasOptionsMenu(),以指示该片段希望将项目添加到选项菜单中(否则,该片段将不会收到调用onCreateOptionsMenu()的请求)。

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

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

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


4
我会选择第一种选项,为每个片段创建一个专用的菜单资源,这样会更加简洁,也可以减少维护可见性的代码复杂度(如果您通过onPrepareOptionsMenu进行操作,并且有隐藏和显示不同菜单的代码)。
如果在您的片段中有一些操作,则可以创建一个基础片段类,让您的每个片段都可以继承。

我完全同意你的观点。 - Jacob Sánchez

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