Добавление RadioButtons в ContextMenu - PullRequest
0 голосов
/ 04 сентября 2010

Я хотел бы добавить переключатели в мое контекстное меню, но я не уверен, как.Вот как это создается:

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

Ответы [ 2 ]

3 голосов
/ 04 сентября 2010

из вашего кода:

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

v - это представление, которое может быть RadioButton или любым другим типом представлений.

, если вы не используете xml для определения RadioButton. Вы должны установить его идентификатор в своем приложении.

v.setId ();

Или вы можете определить ids.xml в res / values.

samples / ApiDemos / src / com / example / android / apis / RadioGroup1.java samples / ApiDemp / res / values ​​/ ids.xml

Руководство для разработчиков меню и контекстного меню:

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

Если вы прокрутите страницу выше, вы можете найти образец RadioButton в контекстном меню.

Цитировать форму выше страницы:

Проверяемые пункты меню

Меню может быть полезным в качестве интерфейса для включения и выключения опций, используя флажок для автономных опций, или переключатели для групп взаимно эксклюзивные варианты. Рисунок 2 показывает подменю с элементами, которые можно проверить с переключателями.

Примечание: пункты меню в меню значков (из меню параметров) не может отображаться флажок или переключатель. если ты выбрать сделать элементы в меню Icon проверяемый, вы должны указать вручную проверенное состояние путем замены значка и / или текст каждый раз, когда состояние меняется.

Вы можете определить проверяемое поведение для отдельных пунктов меню, используя Android: проверяемый атрибут в элемент, или для всей группы с андроидом: проверяемое поведение атрибут в элементе. За Например, все элементы в этой группе меню можно проверить с помощью радиокнопки:

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

принимает либо:

сингл Только один предмет из группы можно проверить (радио кнопки) все Все элементы могут быть отмечены (флажки) Предметы не подлежат проверке. Вы можете применить состояние по умолчанию для элемента атрибут Android: проверено в элемент и изменить его в коде с помощью метода setChecked ().

Когда выбран проверяемый элемент, Система вызывает ваш соответствующий выбранный предметом метод обратного вызова (например, onOptionsItemSelected ()). Это здесь что вы должны установить состояние флажок, потому что флажок или радио кнопка не меняет своего состояния автоматически. Вы можете запросить текущее состояние предмета (как было до того, как пользователь выбрал его) с isChecked (), а затем установить проверенный состояние с помощью setChecked (). Например:

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

Если вы не установите проверенное состояние

таким образом, тогда видимое состояние предмет (флажок или радио кнопка) не изменится, когда пользователь выбирает это. Когда вы установите состояние, Активность сохраняет проверенное состояние элемента, так что когда пользователь открывает меню позже, проверил состояние, которое вы устанавливаете, является видимым.

Примечание: проверяемые пункты меню предназначен для использования только на за сеанс и не сохраняется после приложение уничтожено. если ты есть настройки приложения, которые вы хотел бы сохранить для пользователя, вы следует хранить данные с помощью Shared Настройки.

0 голосов
/ 27 августа 2012
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");

Я не пробовал, но надеюсь, что это сработает:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...