Frage

Ich bin neu in diesem Forum und auf Android-Entwicklung selbst so meine Frage wird wahrscheinlich eine sehr dumme sein, und ich entschuldige mich dafür. Ich begann den Dev Guide auf developer.android.com und bis das Teil mit dem Kontextmenü alles funktionierte ziemlich gut zu lesen. Jetzt habe ich versucht, mit einem Untermenü ein Kontextmenü zu haben, die einige überprüfbare Elemente enthält. Also habe ich das Untermenü und die Elemente in meine menu.xml hinzugefügt und einige item.setchecked (true) Methoden meiner onContextItemSelected (...) Methode.

menu.xml

<?xml version="1.0" encoding="utf-8"?>  
  <menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/info"
        android:title="@string/info" />
    <item android:title="@string/change">
        <menu>
           <item android:id="@+id/checkable_item1"
               android:checked="true"
               android:checkable="true"
               android:title="@string/hello"/>
           <item android:id="@+id/checkable_item2"
               android:checkable="true"
               android:title="@string/moin"/>
           <item android:id="@+id/checkable_item3"
               android:checkable="true" 
               android:title="@string/aloha"/>
       </menu>
  </item>   
</menu>

Teil meiner .java-Datei

...
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
      ContextMenuInfo menuInfo)
{
   super.onCreateContextMenu(menu, v, menuInfo);
   MenuInflater inflater1 = getMenuInflater();
   inflater1.inflate(R.menu.context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item)
{
   switch(item.getItemId())
   {
   case R.id.checkable_item1:
      if(item.isChecked()) item.setChecked(false);
      else item.setChecked(true);
      return true;
   case R.id.checkable_item2:
      if(item.isChecked()) item.setChecked(false);
      else item.setChecked(true);
      return true;
   case R.id.checkable_item3:
      if(item.isChecked()) item.setChecked(false);
      else item.setChecked(true);
      return true;
   default:
      return super.onContextItemSelected(item);
   }
}
...

Das Problem ist jetzt, dass, wenn ich öffnen Sie das Menü und drücken Sie eine der überprüfbaren Elemente, und ich kann sehen, dass das grüne Häkchen erscheint nur in der kleinen Box, bevor Sie das Kontextmenü geschlossen, aber wenn ich das Menü öffne wieder die Zecke ist weg. Jetzt weiß wirklich nicht, warum ich die Zecke nicht in der Box bleiben. Es wäre schön, wenn jemand geben könnte ich mir andeuten und sagt, was ich falsch mache. danken Ihnen im Voraus

jean-claude91

War es hilfreich?

Lösung

Ich habe es selbst nicht ausprobiert, aber wenn ich die Beschreibung hier richtig lesen (http://developer.android.com/reference/android/app/Activity.html#onCreateContextMenu(android.view.ContextMenu, android.view .View, android.view.ContextMenu.ContextMenuInfo)), Ihr Layout Ressource wird jedes Mal werden die Menüs erstellt genannt. Da es „nicht sicher, nachdem die Methode kehrt zu einem Menü zu halten“, müßten Sie das ausgewählte Element verarbeiten und diese Auswahl irgendwo anhalten und dann den aktuellen Zustand der auswählbaren Elemente in die onCreate mit MenuInfo passieren, Einstellung aktiviert / deaktiviert Verwendung dieser Informationen.

Wenn Sie nicht, dann wird das Menü jedes Mal, basierend auf Standardeinstellungen neu erstellt werden (menu.xml).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top