简体   繁体   English

onMenuItemClick 切换案例选择多个案例

[英]onMenuItemClick switch case selecting multiple cases

for some reason my switch case is selecting multiple cases for some reason.出于某种原因,我的开关案例出于某种原因选择了多个案例。 Lets say I click sort -> by name, it selects sort -> by name, sort -> by points and statistics (Shown below).假设我单击排序->按名称,它选择排序->按名称,排序->按点和统计信息(如下所示)。 It's not the first time it's happening, it happened in another part of the code as well, and I simple switched it to "if's" and forgot about it.这不是第一次发生,它也发生在代码的另一部分,我简单地将其切换为“如果”并忘记了它。 Why would he select multiple values upon click?为什么点击时他会 select 多个值? why the random value?为什么随机值? 在此处输入图像描述 Switch Case function:开关盒 function:

    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;
    }

Show Popup:显示弹出窗口:

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

Menu:菜单:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/optionsMenu_sort"
    android:title="Sort">
    <menu>
        <item
            android:id="@+id/optionsMenu_sortByName"
            android:title="By name" />
        <item
            android:id="@+id/optionsMenu_sortByGrade"
            android:title="By grade" />
        <item
            android:id="@+id/optionsMenu_sortByPoints"
            android:title="By points" />
    </menu>
</item>
<item
    android:id="@+id/optionsMenu_save"
    android:title="Save">
    <menu>
        <item
            android:id="@+id/optionsMenu_saveListDevice"
            android:title="On device" />
        <item
            android:id="@+id/optionsMenu_saveListServer"
            android:title="On server" />
    </menu>
</item>

<item
    android:id="@+id/optionsMenu_statistics"
    android:title="Statistics" />
<item
    android:id="@+id/optionsMenu_about"
    android:title="About" />

After every toast you should put a break .每次敬酒后你应该break

see this example from Tutorialspoint.com从 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);
   }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM