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