onOptionsItemSelected вызывается дважды? - PullRequest
0 голосов
/ 18 октября 2011

У меня есть эта проблема, которую я никогда не ожидал. Когда я нажимаю кнопку «Меню», программа отображает «Меню», и после того, как я нажимаю на один из пунктов меню, она выскакивает из списка пунктов для выбора. Однако, как только появляется список элементов, часть кода в 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 голосов
/ 18 октября 2011

Вы выбираете два элемента - сначала вы выбираете пункт меню «Изменить профиль», а затем выбираете конкретный элемент из подменю.

...