Android:如何启用/禁用按钮点击选项菜单项?

当我使用onCreateOptionsMenuonOptionsItemSelected方法时,我可以轻松完成此操作。

但是我在屏幕上的某处有一个按钮,点击该按钮时,它应该启用/禁用上下文菜单项。

谢谢...


无论如何,文档涵盖了所有的事情。

在运行时更改菜单项

一旦活动被创建, 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?

下一篇: Algorithm to solve the N Queens Domination puzzle