Question

Je suis nouveau sur ce forum et de développement Android lui-même si ma question sera probablement un très stupide et je me excuse pour cela. J'ai commencé à lire le Guide Dev sur developer.android.com et jusqu'à ce que la partie avec le tout des menus contextuels fonctionnait assez bien. Maintenant, j'essayé d'avoir un menu contextuel avec un sous-menu qui contient certains éléments cochables. Donc, j'ai ajouté le sous-menu et les articles à mon menu.xml et certaines méthodes item.setchecked (vrai) à ma méthode onContextItemSelected (...).

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>

une partie de mon fichier .java

...
@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);
   }
}
...

Maintenant, le problème est que lorsque j'ouvre le menu et appuyez sur un des éléments cochables et je peux voir que la coche verte apparaît dans la petite boîte juste avant la fermeture du menu contextuel, mais quand j'ouvre le menu à nouveau la tique est parti. Maintenant, je ne sais pas vraiment pourquoi la tique ne reste pas dans la boîte. Ce serait bien si quelqu'un pouvait me donner allusion et me dire ce que je fais mal. vous remerciant d'avance

jean-claude91

Était-ce utile?

La solution

Je n'ai pas essayé moi-même, mais si je lis la description ici correctement (http://developer.android.com/reference/android/app/Activity.html#onCreateContextMenu(android.view.ContextMenu, android.view .view, android.view.ContextMenu.ContextMenuInfo)), votre ressource de mise en page sera appelée à chaque fois que le menu est créé. Comme il est « pas sûr de tenir un menu après le retour de la méthode », vous devez traiter l'élément sélectionné et persister que quelque part de sélection, puis passer à l'état actuel des éléments sélectionnables dans le onCreate avec menuInfo, paramètre cochée / décochée en utilisant cette information.

Si vous ne pas, le menu sera recréée à chaque fois en fonction de vos paramètres par défaut (menu.xml).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top