2017-10-17 30 views
0

J'ai un problème dans mon application lorsque j'utilise le menu contextuel avec élément vérifiable.élément vérifiable dans android PopupMenu ne fonctionne probablement pas

Je voulais mettre en œuvre élément de contrôle à plusieurs dans mon menu contextuel, mais lorsque vous cliquez sur un élément du menu disparaît bien que j'ai mis le comportement checkable à tous

c'est la mise en page du menu

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

et c'est l'instruction switch où je suppose que l'erreur est ici, mais je ne peux pas le trouver

    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: 

Répondre

0

enfin, je l'ai trouvé la solution (quelqu'un me aide à facebook) Je viens de modifier le retour vrai return false

0

Voici la solution pour vous.

On clique menu au point appeler une méthode

keepMenuOpen(item); 

Ce keepMenuOpen est défini comme celui-ci.

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; 
      } 
     }); 
    } 
+0

même le menu contextuel disparaît toujours que le travail non – maiajam

+0

vous devez utiliser Android : checkable = "true" dans chaque élément du menu, pas seulement un seul. –

+0

le même rien ne change après l'avoir ajouté, je me demande ce qui est dans le document android pour définir le comportement vérifiable comme tout pourquoi ne pas travailler avec moi @ – maiajam