Android onMenuItem单击切换案例选择多个案例

Android onMenuItem单击切换案例选择多个案例,android,menu,switch-statement,onclicklistener,popupmenu,Android,Menu,Switch Statement,Onclicklistener,Popupmenu,出于某种原因,我的开关箱出于某种原因选择了多个开关箱。 假设我点击sort->by name,它选择sort->by name,sort->by points和statistics(如下所示)。 这不是第一次发生,它也发生在代码的另一部分,我简单地将它切换到“if's”并忘记了它。为什么他会在单击时选择多个值?为什么是随机值? 开关箱功能: public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId

出于某种原因,我的开关箱出于某种原因选择了多个开关箱。 假设我点击sort->by name,它选择sort->by name,sort->by points和statistics(如下所示)。 这不是第一次发生,它也发生在代码的另一部分,我简单地将它切换到“if's”并忘记了它。为什么他会在单击时选择多个值?为什么是随机值? 开关箱功能:

    public boolean onMenuItemClick(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.optionsMenu_saveListDevice:
            Toast.makeText(this, "saveDevice", Toast.LENGTH_SHORT).show();
        case R.id.optionsMenu_saveListServer:
            Toast.makeText(this, "saveServer", Toast.LENGTH_SHORT).show();
        case R.id.optionsMenu_about:
            Toast.makeText(this, "about", Toast.LENGTH_SHORT).show();
        case R.id.optionsMenu_sortByGrade:
            Toast.makeText(this, "sortGrade", Toast.LENGTH_SHORT).show();
        case R.id.optionsMenu_sortByName:
            Toast.makeText(this, "sortName", Toast.LENGTH_SHORT).show();
        case R.id.optionsMenu_sortByPoints:
            Toast.makeText(this, "sortPoints", Toast.LENGTH_SHORT).show();
        case R.id.optionsMenu_statistics:
            Toast.makeText(this, "statistics", Toast.LENGTH_SHORT).show();
        default:
            return false;
    }
显示弹出窗口:

    public void showPopup(View v) {
    PopupMenu popup = new PopupMenu(this, v);
    popup.setOnMenuItemClickListener((PopupMenu.OnMenuItemClickListener) this);
    popup.inflate(R.menu.popup_menu);
    popup.show();
}
菜单:


每次敬酒后,你应该放一个
休息

请参见Tutorialspoint.com上的示例

public class Test {

   public static void main(String args[]) {
      // char grade = args[0].charAt(0);
      char grade = 'C';

      switch(grade) {
         case 'A' :
            System.out.println("Excellent!"); 
            break;
         case 'B' :
         case 'C' :
            System.out.println("Well done");
            break;
         case 'D' :
            System.out.println("You passed");
         case 'F' :
            System.out.println("Better try again");
            break;
         default :
            System.out.println("Invalid grade");
      }
      System.out.println("Your grade is " + grade);
   }
}

您可以尝试记录item.getItemID()的值和其他id的整数值,并比较结果,还应该在每个case语句中添加break,因为您使用它的方式不是一种好的做法。是的,break就是问题所在。谢谢这就是当你想得太多而忘记了最基本的东西时会发生的事情。谢谢你,伙计!
public class Test {

   public static void main(String args[]) {
      // char grade = args[0].charAt(0);
      char grade = 'C';

      switch(grade) {
         case 'A' :
            System.out.println("Excellent!"); 
            break;
         case 'B' :
         case 'C' :
            System.out.println("Well done");
            break;
         case 'D' :
            System.out.println("You passed");
         case 'F' :
            System.out.println("Better try again");
            break;
         default :
            System.out.println("Invalid grade");
      }
      System.out.println("Your grade is " + grade);
   }
}