代码之家  ›  专栏  ›  技术社区  ›  Mai Abu Ajamieih

android弹出菜单中的可检查项可能不工作

  •  0
  • Mai Abu Ajamieih  · 技术社区  · 8 年前

    当我使用带有可检查项的弹出菜单时,我的应用程序出现问题。

    这是菜单布局

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    
    <group android:checkableBehavior="all">
        <item android:id ="@+id/sun"
            android:checkable="true"
            android:title="@string/sun"/>
        <item android:id ="@+id/Mon"
            android:title="@string/Mon"/>
        <item android:id ="@+id/Tus"
            android:title="@string/Tus"/>
        <item android:id ="@+id/Wed"
            android:title="@string/wed"/>
        <item android:id ="@+id/Thu"
            android:title="@string/Thu"/>
        <item android:id ="@+id/fri"
            android:title="@string/fri"/>
        <item android:id ="@+id/Sat"
            android:title="@string/Sat"/>
    
    
    
    </group>
    

    这是switch语句,我想错误在这里,但我找不到

                        PopupMenu popupMenu = new PopupMenu(getBaseContext(), ch_specificDay);
                        MenuInflater inflater = popupMenu.getMenuInflater();
                        inflater.inflate(R.menu.weekdays, popupMenu.getMenu());
    
                     popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                         @Override
                         public boolean onMenuItemClick(MenuItem item) {
    
    
                             switch (item.getItemId()) {
                                 case R.id.sun:
                                     if(item.isChecked())
                                 {
                                     item.setChecked(false);
                                     sunCheck = false;
                                 }else
                                     {
                                         item.setChecked(true);
                                         sunCheck = true;
                                     }
                                    break;
    
                                 case R.id.Mon:
                                     if(item.isChecked())
                                     {
                                         item.setChecked(false);
                                         monCheck  = false;
                                     }else
                                     {
                                         item.setChecked(true);
                                         monCheck = true;
                                     }
                                    break;
    
                                 case R.id.Tus:
                                     if(item.isChecked())
                                     {
                                         item.setChecked(false);
                                         TusCheck = false;
                                     }else
                                     {
                                         item.setChecked(true);
                                         TusCheck = true;
                                     }
                                    break;
                                 case R.id.Thu:
                                     if(item.isChecked())
                                     {
                                         item.setChecked(false);
                                         ThrChec= false;
                                     }else
                                     {
                                         item.setChecked(true);
                                         ThrChec = true;
                                     }
                                        break;
    
                                 case R.id.Wed:
                                     if(item.isChecked())
                                     {
                                         item.setChecked(false);
                                         wenCheck= false;
                                     }else
                                     {
                                         item.setChecked(true);
                                         wenCheck = true;
                                     }
                                    break;
    
                                 case R.id.Sat:
                                     if(item.isChecked())
                                     {
                                         item.setChecked(false);
                                         satCheck = false;
                                     }else
                                     {
                                         item.setChecked(true);
                                         satCheck  = true;
                                     }
    
                                     break;
                                 case R.id.fri:
                                     if(item.isChecked())
                                     {
                                         item.setChecked(false);
                                         FriCheck  = false;
                                     }else
                                     {
                                         item.setChecked(true);
                                         FriCheck   = true;
                                     }
    
                                     break;
                                    default:
                                        break;
    
    
                             }
                             return true ;
                         }
                     });
                        popupMenu.show();
                        break;
                    default:
    
    2 回复  |  直到 8 年前
        1
  •  0
  •   Akhilesh Awasthi    8 年前

    这是给你的解决方案。

    单击菜单项调用方法

    keepMenuOpen(item);
    

    private void keepMenuOpen(MenuItem item) {
    
            item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
            item.setActionView(new View(HomeActivity.this));
            item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
                @Override
                public boolean onMenuItemActionExpand(MenuItem item) {
                    return false;
                }
    
                @Override
                public boolean onMenuItemActionCollapse(MenuItem item) {
                    return false;
                }
            });
        }
    
        2
  •  0
  •   Mai Abu Ajamieih    8 年前

    最后,我找到了解决方案(有人在脸书上帮我) 我只是将返回true改为返回false