MenuItem isEnabled不起作用

时间:2013-07-05 23:07:02

标签: android menu menuitem

我有一个包含两个选项的菜单,我只想在选择MenuItem时,它被禁用,另一个MenuItem启用。我创建了一个调用invalidateOptionsMenu()的onOptionsItemSelected(),只是为了进行更改。

我的onPrepareOptionsMenu():

@Override
public boolean onPrepareOptionsMenu(Menu menu){
    super.onPrepareOptionsMenu(menu);

    MenuItem onePlayer = menu.findItem(R.id.Settings_OnePlayer);
    MenuItem twoPlayer = menu.findItem(R.id.Settings_TwoPlayer);

    System.out.println("onePlayer " + onePlayer.isEnabled() + " twoPlayer " + twoPlayer.isEnabled());


    if(onePlayer.isEnabled()){
        onePlayer.setEnabled(false);
        twoPlayer.setEnabled(true);
    }
    else{
        onePlayer.setEnabled(true);
        twoPlayer.setEnabled(false);
    }
    return true;
}

这似乎很容易,但我执行此操作并且总是得到相同的结果:

onePlayer = false twoPlayer = true。

无论我点击菜单多少次,它都不会改变isEnabled()的结果。当然,GUI没有变化。

我确定问题出在isEnabled()上,因为这段代码有效:

@Override
public boolean onPrepareOptionsMenu(Menu menu){
    super.onPrepareOptionsMenu(menu);

    MenuItem onePlayer = menu.findItem(R.id.Settings_OnePlayer);
    MenuItem twoPlayer = menu.findItem(R.id.Settings_TwoPlayer);

    System.out.println("onePlayer " + onePlayer.isEnabled() + " twoPlayer " + twoPlayer.isEnabled());

    if (onePlayercheck){
        onePlayer.setEnabled(false);
        twoPlayer.setEnabled(true);
    }
    else{
        onePlayer.setEnabled(true);
        twoPlayer.setEnabled(false);
    }
    onePlayercheck = !onePlayercheck;

    return true;
}

onePlayercheck只是一个布尔值。

当然,它一直在回归:

onePlayer = false twoPlayer = true。

但现在,我可以看到GUI上的更改。

如果最后一个代码有效,我认为setEnabled()有效,但为什么isEnabled()返回总是相同?变化应该持续下去,不是吗?

0 个答案:

没有答案