我的活动有2个片段 一次可见1个片段,每个片段都有不同的选项菜单。
我可以通过两种不同的方式实现这种行为。
1 - 我可以通过在每个朋友中调用onCreateOptionsMenu
为每个片段添加不同的菜单
2 - 我在活动级别只能有一个菜单,可以选择在onPrepareOptionsMenu
我想知道的是:
哪个是实现此功能的首选方式?
推荐什么?
答案 0 :(得分:7)
希望这有帮助
将项目添加到操作栏
您的片段可以通过实现onCreateOptionsMenu()将菜单项提供给活动的“选项”菜单(以及操作栏)。但是,为了使此方法接收调用,您必须在onCreate()期间调用setHasOptionsMenu(),以指示该片段要将项添加到Options菜单(否则,片段将不会接收对onCreateOptionsMenu()的调用)。
然后,您从片段添加到“选项菜单”的任何项目都会附加到现有菜单项目中。当选择菜单项时,片段还接收对onOptionsItemSelected()的回调。
您还可以在片段布局中注册视图,以通过调用registerForContextMenu()来提供上下文菜单。当用户打开上下文菜单时,片段将接收对onCreateContextMenu()的调用。当用户选择一个项目时,该片段接收对onContextItemSelected()的调用。
http://developer.android.com/guide/components/fragments.html
答案 1 :(得分:4)
我会遵循第一个选项,因为每个片段都有一个专用的资源菜单看起来更干净,并且还降低了为了维护可见内容和不可见内容而具有的代码复杂性(如果您要通过{{1}并且有代码隐藏和显示不同的菜单。
如果你的片段中有一些动作,那么你可以创建一个基础片段类,每个片段都会扩展。