将RadioButtons添加到ContextMenu

时间:2010-09-04 07:01:46

标签: java android menu 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");  
    }  

2 个答案:

答案 0 :(得分:3)

来自您的代码:

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

v是一个可以是RadioButton或任何其他类型的视图的视图。

如果您没有使用xml来定义RadioButton。你应该在你的应用程序中设置它的ID。

v.setId();

或者您可以在res / values中定义ids.xml。

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显示了一个   子菜单包含可检查的项目   用单选按钮。

     

注意:图标菜单中的菜单项   (从“选项”菜单中)无法显示   复选框或单选按钮。如果你   选择在图标菜单中制作项目   可检查,你必须手动指示   通过交换图标来检查状态   和/或每次状态时发短信   变化。

     

您可以定义可检查行为   使用的单个菜单项   android:checkable属性中的    元素,或整个组   使用android:checkableBehavior   元素中的属性。对于   例如,此菜单组中的所有项目   可通过单选按钮检查:

> <?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:checked属性    元素并在代码中更改它   使用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);   }
> } 

如果未设置选中状态

  这样,然后是可见状态   项目(复选框或收音机   按钮)在用户时不会改变   选择它。当你设置状态时,   活动保留已选中   物品的状态,以便当   用户稍后打开菜单,选中   您设置的状态是可见的。

     

注意:可检查的菜单项是   仅用于a   每个会话基础而不是保存之后   该应用程序被销毁。如果你   有你的应用程序设置   想为用户保存,你   应该使用Shared存储数据   偏好。

答案 1 :(得分:-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");

我没试过,但我希望它有效: