2010-09-04 53 views
0

我想将单选按钮添加到我的上下文菜单,但我不知道如何。这是它是如何创建的:将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"); 
    } 

回答

3

从代码:

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

v是一个观点,即可以是一个单选按钮或任何其他类型的意见。

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

v.setId();

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

样本/ ApiDemos/SRC/COM /示例/机器人的/ apis/RadioGroup1.java样本/ ApiDemp/RES /值/ ids.xml

菜单&上下文菜单的开发者指南:

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

如果您滚动上面的页面,您可以在上下文菜单中找到RadioButton示例。

报价形成上述页:

可选中菜单项

的菜单可以是作为用于打开和关闭选项的接口 有用,使用 单机选项的复选框,或 单选按钮组的单选按钮 。图2显示了一个 子菜单,带有单选按钮的可检查项目 。

注意:图标菜单 中的菜单项(来自选项菜单)不能显示 复选框或单选按钮。如果 选择使图标菜单 中的项目可选,则必须在每次更改状态 时通过交换图标 和/或文本来手动指示 已选中状态。

可以定义为使用Android的 各个菜单项的可检查的行为 :可检查属性在 元素,或为整个群体 了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); } 
> } 

如果不设置选中状态

这样,那么 项目(复选框或单选按钮 )的可见状态不会改变的时候用户 选择它。当您设置状态 时,“活动”将保留项目的选中 状态,以便稍后用户打开菜单时,您设置的已选中的 状态可见。

注:可选中菜单项 打算在 每个会话只用,而不是保存在应用程序被破坏后 。如果您的 具有 想为用户保存的应用程序设置,则您的 应使用共享 首选项存储数据。

+0

我不是从XML夸大我的上下文菜单。我怎么能在代码中做到这一点? – 2010-09-04 07:13:07

+0

@Sheehan:回答编辑。看第一部分。 – mhshams 2010-09-04 07:32:43

+0

不知道我是否明白你的意思。我会为v.setId()设置什么? – 2010-09-04 07:47:57

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

我没有尝试,但我希望它的工作原理:

相关问题