我得到菜单项,然后我尝试设置可见性,但始终显示菜单项。谁能看到我犯错误的地方?
菜单项不为空,因此分配的不是它。
MenuItem done = menu.findItem(R.id.action_done);
//animate the list view
if (isListEditing) {
done.setVisible(true);
menuItem.setTitle(this.getString(R.string.EditKey));
isListEditing = false;
adapter.endEdit();
} else {
done.setVisible(false);
menuItem.setTitle(this.getString(R.string.DoneKey));
isListEditing = true;
adapter.makeEditable();
}
this.invalidateOptionsMenu();
我在这里得到菜单参考:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_test_results, menu);
this.menu = menu;
return true;
}
更新
我的印象是您在编辑后必须使选项菜单无效。但这就是导致编辑无法通过的原因。
答案 0 :(得分:2)
根据docs,invalidateOptionsMenu()的作用是:
声明选项菜单已更改,因此应重新创建。 onCreateOptionsMenu(Menu)方法将在下次需要显示时调用。
这意味着onCreateOptionsMenu将再次被调用,膨胀您的原始菜单布局,从而放弃您之前对菜单项可见性的更改。
动态修改菜单内容的推荐方法是使用onPrepareOptionsMenu。因此,无论何时需要更新菜单项,都可以调用invalidateOptionsMenu(),然后在onPrepareOptionsMenu中设置菜单项可见性。
答案 1 :(得分:0)
没有必要
this.invalidateOptionsMenu();
取消它,它应该可以正常工作。