onOptionsItemSelected被调用两次?

时间:2011-10-18 02:52:48

标签: android menu menuitem

我有这个问题,我从没想过会发生这个问题。当我按下菜单按钮时,程序显示菜单,当我点击菜单中的一个项目后,它会弹出一个项目列表供我选择。但是,当项目列表弹出时,onOptionsItemSelected()中的一些代码在我甚至没有选择任何项目时被调用。在我选择了项目之后,再次调用onOptionsItemSelected()(我知道这是因为选择了一个项目而调用)。任何人都可以告诉我如何解决这个问题,甚至为什么会发生这种情况?以下是编码......

顺便说一下,'count'只是一个整数变量,用于显示onOptionsItemSelected()是否被调用,因为每次调用时它都会递增。

public boolean onCreateOptionsMenu(Menu menu) {

    SubMenu sendMenu = menu.addSubMenu("Change Profile");

    int size = profileNames.size();

    for(int i=0; i<size; i++){
        sendMenu.add(0,i,0,profileNames.get(i).toString());
    }

    menu.add(1, size, 0, "Configuration");
    return super.onCreateOptionsMenu(menu);
}




@Override
public boolean onOptionsItemSelected(MenuItem item) {

    count++;

    Toast toast1 = Toast.makeText(this, "Count: "+count, Toast.LENGTH_SHORT);
    toast1.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
    toast1.show();

    selectedProfileName = null;
    //change the map according to the selected profile name
    if(item.getItemId()<=profileNames.size()-1){
        selectedProfileName = profileNames.get(item.getItemId());
        setContentView(new SampleView(this));
    }
    else{
        Intent myIntent=new Intent(this,configurationTabWidget.class);
        startActivity(myIntent);
    }
    //just to re-draw the map with the new selected profile name        
    return true;
}

1 个答案:

答案 0 :(得分:0)

您正在选择两个项目 - 首先选择“更改个人资料”菜单项,然后从子菜单中选择特定项目。