您的位置:首页 > 其它

Fragment中menu菜单注意事项

2014-12-12 15:41 302 查看
以前一般都是在Activity中添加menu菜单,一般是重写onCreateOptionsMenu和onOptionsItemSelected方法。

现在用fragment用的多了,就在fragment里面添加menu菜单,也是重写了onCreateOptionsMenu和onOptionsItemSelected方法,但是发现没有效果。

好吧,看了下源代码,原来跟一个mHasMenu的boolean变量有关系


1
// If set this fragment has menu items to contribute.
2
boolean

mHasMenu;
这个变量控制fragment的menu菜单添加:


01
boolean
performCreateOptionsMenu(Menu menu, MenuInflater inflater) {
02
boolean

show =
false
;
03
if

(!mHidden) {
04
if

(mHasMenu && mMenuVisible) {
05
show =
true
;
06
onCreateOptionsMenu(menu, inflater);
07
}
08
if

(mChildFragmentManager !=
null
) {
09
show |= mChildFragmentManager.dispatchCreateOptionsMenu(menu, inflater);
10
}
11
}
12
return

show;
13
}
上面代码说明,如果mHasMenu为false,那么是不会执行onCreateOptionsMenu(menu, inflater)方法的,也就是不会添加fragment的menu菜单。

所以,在fragment中使用menu菜单,需要在onCreate()方法里面添加语句

setHasOptionsMenu(true);

也就是这样:


1
<a href=
"http://home.51cto.com/index.php?s=/space/5017954"

target=
"_blank"
>
@Override
</a>
2
public

void
onCreate(Bundle savedInstanceState) {
3
super
.onCreate(savedInstanceState);
4
setHasOptionsMenu(
true
);
5
}
嗯,很简单的东西,总结下,希望大家以后不要跟我一样犯错误哈。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: