2010-09-04 3 views
0

Je voudrais ajouter des boutons radio à mon menu contextuel, mais je ne sais pas comment. Voici comment il est créé:Ajout de RadioButtons à ContextMenu

@Override 
    public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) { 

     super.onCreateContextMenu(menu, v, menuInfo); 
     menu.setHeaderTitle("Selection Options"); 
     menu.add(0, v.getId(), 0, "Remove"); 
    } 

Répondre

3

de votre code:

menu.add(0, v.getId(), 0, "Remove"); 

v est une vue qui peut être un RadioButton ou tout autre type de vues.

si vous n'utilisez pas xml pour définir RadioButton. vous devez définir son ID dans votre application.

v.setId();

Ou vous pouvez définir ids.xml dans res/values.

échantillons/ApiDemos/src/com/example/android/apis/samples RadioGroup1.java/ApiDemp/res/valeurs/ids.xml

Menu & Contexte Guide des développeurs Menu:

http://developer.android.com/guide/topics/ui/menus.html

Si vous faites défiler la page ci-dessus, vous pouvez trouver l'exemple de RadioButton dans le menu contextuel.

Citation forme la page ci-dessus:

éléments de menu checkable

Un menu peut être utile comme une interface pour activer les options et désactiver, en utilisant une case à cocher pour les options autonomes, ou boutons radio pour groupes d'options exclusives mutuellement . La figure 2 montre un sous-menu avec des éléments vérifiables avec des boutons radio.

Remarque: Les éléments de menu dans le menu d'icônes (dans le menu Options) ne peuvent pas afficher une case à cocher ou un bouton radio. Si vous choisir de faire des éléments dans le menu d'icône vérifiable, vous devez indiquer manuellement l'état vérifié en permutant l'icône et/ou le texte chaque fois que l'état change.

Vous pouvez définir le comportement checkable pour les éléments de menu en utilisant le attribut android: checkable dans l'élément , ou pour un groupe entier avec l'androïde: checkableBehavior attribut dans l'élément.Pour exemple, tous les éléments de ce groupe de menu sont checkable avec un bouton radio:

> <?xml version="1.0" encoding="utf-8"?> 
> <menu 
> xmlns:android="http://schemas.android.com/apk/res/android"> 
>  <group android:checkableBehavior="single"> 
>   <item android:id="@+id/red" 
>    android:title="@string/red" /> 
>   <item android:id="@+id/blue" 
>    android:title="@string/blue" /> 
>  </group> </menu> The android:checkableBehavior attribute 

accepte soit:

unique Un seul élément du groupe peuvent être vérifiés (boutons radio) tous Tous articles peuvent être cochés (cases à cocher) aucun Aucun élément n'est vérifiable Vous pouvez appliquer un état par défaut à un élément en utilisant l'attribut android: checked dans le et modifiez-le dans le code avec la méthode setChecked().

Lorsqu'un élément est sélectionné checkable, le système appelle votre méthode de rappel sélectionné élément- respectif (tels que onOptionsItemSelected()). C'est ici que vous devez définir l'état de la case à cocher , car une case à cocher ou un bouton radio ne change pas automatiquement son état . Vous pouvez interroger le état actuel de l'article (comme il était avant que l'utilisateur l'a sélectionné) avec isChecked(), puis définissez l'état vérifié avec setChecked(). Par exemple:

> @Override public boolean 
> onOptionsItemSelected(MenuItem item) { 
> switch (item.getItemId()) { case 
> R.id.vibrate: case 
> R.id.dont_vibrate: 
>  if (item.isChecked()) item.setChecked(false); 
>  else item.setChecked(true); 
>  return true; default: 
>  return super.onOptionsItemSelected(item); } 
> } 

Si vous ne définissez pas l'état vérifié

cette façon, l'état visible de l'élément (la touche case à cocher ou la radio ) ne changera pas quand l'utilisateur le sélectionne. Lorsque vous définissez l'état, l'activité préserve l'état vérifié de l'élément de sorte que lorsque l'utilisateur ouvre le menu ultérieurement, l'état que vous avez défini est visible.

Remarque: Les éléments de menu Vérifiable sont destinés à être utilisés uniquement sur une base par session et non enregistrée après l'application est détruite. Si vous avez paramètres d'application que vous souhaitez enregistrer pour l'utilisateur, vous devez stocker les données en utilisant les préférences partagées .

+0

Je ne suis pas Gonflage mon menu contextuel de XML. comment puis-je le faire en code? –

+0

@Sheehan: réponse éditée. regarde la première partie. – mhshams

+0

pas sûr si je comprends ce que vous voulez dire. que dois-je définir pour v.setId()? –

-1
RadioButton rBtn1 = new RadioButton(this); 
RadioButton rBtn2 = new RadioButton(this); 
rBtn1.setText("radio button 1"); 
rBtn2.setText("radio button 2"); 
//Add all your RadioButtons the same way. 

RadioGroup group = new RadioGroup(this); 
group.addView(rBtn1); 
group.addView(rBtn2); 

menu.add(0, group.getId(), 0, "whatever"); 

Je n'y suis pas allé, mais je l'espère cela fonctionne: