Android:如何启用/禁用按钮点击选项菜单项?
当我使用onCreateOptionsMenu
或onOptionsItemSelected
方法时,我可以轻松完成此操作。
但是我在屏幕上的某处有一个按钮,点击该按钮时,它应该启用/禁用上下文菜单项。
谢谢...
无论如何,文档涵盖了所有的事情。
在运行时更改菜单项
一旦活动被创建, onCreateOptionsMenu()
方法只被调用一次,如上所述。 系统会保留并重新使用您在此方法中定义的Menu
,直到您的活动被破坏。 如果您想在首次创建后更改选项菜单,则必须重写onPrepareOptionsMenu()
方法。 这会传递给你当前存在的Menu对象。 如果您想根据应用程序的当前状态删除,添加,禁用或启用菜单项,这非常有用。
例如
@Override
public boolean onPrepareOptionsMenu (Menu menu) {
if (isFinalized) {
menu.getItem(1).setEnabled(false);
// You can also use something like:
// menu.findItem(R.id.example_foobar).setEnabled(false);
}
return true;
}
在Android 3.0及更高版本中,当菜单项出现在操作栏中时,选项菜单始终处于打开状态。 当发生事件并且想要执行菜单更新时,必须调用invalidateOptionsMenu()
来请求系统调用onPrepareOptionsMenu()
。
在所有Android版本中,最简单的方法是:使用此选项将菜单操作图标显示为已禁用,并将其功能设为已禁用:
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem item = menu.findItem(R.id.menu_my_item);
if (myItemShouldBeEnabled) {
item.setEnabled(true);
item.getIcon().setAlpha(255);
} else {
// disabled
item.setEnabled(false);
item.getIcon().setAlpha(130);
}
}
您可以在创建选项菜单时将该项目保存为变量,然后随意更改其属性。
private MenuItem securedConnection;
private MenuItem insecuredConnection;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.connect_menu, menu);
securedConnection = menu.getItem(0);
insecuredConnection = menu.getItem(1);
return true;
}
public void foo(){
securedConnection.setEnabled(true);
}
链接地址: http://www.djcxy.com/p/57381.html
上一篇: Android: How to enable/disable option menu item on button click?