2017-10-17 3 views
0

Ich habe ein Problem in meiner App, wenn ich Popup-Menü whith Checkable Element verwenden.überprüfbares Element in Android PopupMenu funktioniert nicht wahrscheinlich

wollte ich mehr Prüfelementedaten in meinem Popup-Menü implementieren, aber wenn ein Element klicken verschwindet das Menü, obwohl ich auf all

das überprüfbar Verhalten gesetzt habe dies ist das Menü-Layout

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

und das ist die switch-Anweisung, wo ich vermute, dass der Fehler hier ist, aber ich kann es nicht finden

    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: 

Antwort

0

endlich, ich habe die Lösung (jemand hilft mir bei Facebook) gefunden Ich habe gerade die Rückkehr true false

0

Hier ist die Lösung für Sie.

Bei Klick auf Menü-Eintrag Methode aufrufen

keepMenuOpen(item); 

Diese keepMenuOpen wie folgt definiert ist.

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

das gleiche das Popup-Menü noch zurück verschwinden, dass nicht – maiajam

+0

arbeiten Sie haben Android zu verwenden : checkable = "true" in jedem Menüpunkt, nicht nur ein einzelner. –

+0

das gleiche nichts nach dem Hinzufügen ändern, ich frage mich, das ist in android Dokument zu überprüfbaren Verhalten als alle warum nicht mit mir arbeiten @ – maiajam

Verwandte Themen