最近项目中要用到一个东东: 点击菜单要根据状态来显示选项。
最初采用的是onCreateOptionsmenu,return false的话,基本你在menu里面执行了添加item的操作,那么也会没反应的, 只有在return true的情况下,你添加的菜单项才会突显出来.
so,如何解决呢?
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// MenuInflater inflater = getMenuInflater();
// inflater.inflate(R.menu.menu_main, menu);
menu.clear();//must clear first in onPrepareOptionsMenu
if(loginSuccess)
{
Log.e("", "login success");
menu.add(0, 0, 0, "注销");
menu.add(0, 1, 0, "退出");
}
else
{
Log.e("", "do not login");
menu.add(0, 0, 0, "注册");
menu.add(0, 1, 0, "登陆");
menu.add(0, 2, 0, "退出");
}
return true;
}
调用 onPrepareOptionsMenu
在调用这个方法的时候有必要注意一点,每次调用之前都先调用下menu.clear,或者直接更新里面的元素,不然每次都次点击menu菜单都会添加2个item.
最初采用的是onCreateOptionsmenu,return false的话,基本你在menu里面执行了添加item的操作,那么也会没反应的, 只有在return true的情况下,你添加的菜单项才会突显出来.
so,如何解决呢?
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// MenuInflater inflater = getMenuInflater();
// inflater.inflate(R.menu.menu_main, menu);
menu.clear();//must clear first in onPrepareOptionsMenu
if(loginSuccess)
{
Log.e("", "login success");
menu.add(0, 0, 0, "注销");
menu.add(0, 1, 0, "退出");
}
else
{
Log.e("", "do not login");
menu.add(0, 0, 0, "注册");
menu.add(0, 1, 0, "登陆");
menu.add(0, 2, 0, "退出");
}
return true;
}
调用 onPrepareOptionsMenu
在调用这个方法的时候有必要注意一点,每次调用之前都先调用下menu.clear,或者直接更新里面的元素,不然每次都次点击menu菜单都会添加2个item.
转载于:https://blog.51cto.com/whatandroid/754207