【问题标题】:Able to select both radio buttons in same group能够选择同一组中的两个单选按钮
【发布时间】:2013-11-27 05:01:43
【问题描述】:

请看下面的代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#ffffff" >

    <RadioGroup
        android:id="@+id/save_selection_group"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignBaseline="@+id/save_txt"
        android:layout_toRightOf="@+id/save_txt" >
    </RadioGroup>

    <RadioButton
        android:id="@+id/radio0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/save_txt"
        android:layout_alignBottom="@+id/save_txt"
        android:layout_toRightOf="@+id/save_selection_group"
        android:checked="true"
        android:text="SD" />

    <RadioButton
        android:id="@+id/radio1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/radio0"
        android:layout_alignBottom="@+id/radio0"
        android:layout_toRightOf="@+id/radio0"
        android:text="Phone" />

    <TextView
        android:id="@+id/save_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="22dp"
        android:paddingTop="5dp"
        android:text="@string/save_to" />

    <TextView
        android:id="@+id/save_name_txt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/save_txt"
        android:layout_marginTop="50dp"
        android:text="@string/save_name" />

    <EditText
        android:id="@+id/save_name_edt"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/save_txt"
        android:layout_toRightOf="@+id/save_name_txt"
        android:layout_alignBaseline="@+id/save_name_txt"
        android:layout_marginLeft="15dp"
        android:paddingBottom="10dp"
        android:ems="8" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/save_voice_note_button"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/save_txt"
        android:layout_toRightOf="@+id/save_name_edt"
        android:layout_alignBaseline="@+id/save_name_edt"
        android:layout_marginLeft="5dp"
        android:text="@string/save" />

</RelativeLayout>

Java 代码

private class SaveEvent implements OnClickListener
    {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            final Dialog dialog = new Dialog(VoiceNotes.this);
            dialog.setContentView(R.layout.save_dialog);
            dialog.setTitle("Save your file");
            dialog.show();

            final Button saveButton = (Button)dialog.findViewById(R.id.save_voice_note_button);
            final RadioGroup saveLocationRadioGroup = (RadioGroup)dialog.findViewById(R.id.save_selection_group);

            final String spokenText = voiceEdt.getText().toString();


            //Writing the Event handler for the Save button
            saveButton.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                    int selectedLocationId = saveLocationRadioGroup.getCheckedRadioButtonId();
                    RadioButton saveLocationRadioButton = (RadioButton)dialog.findViewById(selectedLocationId);

                    if(saveLocationRadioButton.getText().equals("SD"))
                    {
                        }

                }
            });


        }

}

在这里,我可以选择两个单选按钮!但你知道,这就是他们的目的。一个应该选择!这是为什么?

【问题讨论】:

  • 未正确结束

标签: java android eclipse radio-button radio-group


【解决方案1】:

您需要将单选按钮添加到RadioGroup

举个例子:

<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <RadioButton android:id="@+id/radio_pirates"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/pirates"
        android:onClick="onRadioButtonClicked"/>
    <RadioButton android:id="@+id/radio_ninjas"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/ninjas"
        android:onClick="onRadioButtonClicked"/>
</RadioGroup>

【讨论】:

    【解决方案2】:

    将您的&lt;/RadioGroup&gt; 放在第二个单选按钮之后。如下图,

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ffffff" >
    
        <RadioGroup
            android:id="@+id/save_selection_group"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_alignBaseline="@+id/save_txt"
            android:layout_toRightOf="@+id/save_txt" >
    
    
        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/save_txt"
            android:layout_alignBottom="@+id/save_txt"
            android:layout_toRightOf="@+id/save_selection_group"
            android:checked="true"
            android:text="SD" />
    
        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/radio0"
            android:layout_alignBottom="@+id/radio0"
            android:layout_toRightOf="@+id/radio0"
            android:text="Phone" />
        </RadioGroup>
    
        <TextView
            android:id="@+id/save_txt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginTop="22dp"
            android:paddingTop="5dp"
            android:text="@string/save_to" />
    
        <TextView
            android:id="@+id/save_name_txt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/save_txt"
            android:layout_marginTop="50dp"
            android:text="@string/save_name" />
    
        <EditText
            android:id="@+id/save_name_edt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/save_txt"
            android:layout_toRightOf="@+id/save_name_txt"
            android:layout_alignBaseline="@+id/save_name_txt"
            android:layout_marginLeft="15dp"
            android:paddingBottom="10dp"
            android:ems="8" >
    
            <requestFocus />
        </EditText>
    
        <Button
            android:id="@+id/save_voice_note_button"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/save_txt"
            android:layout_toRightOf="@+id/save_name_edt"
            android:layout_alignBaseline="@+id/save_name_edt"
            android:layout_marginLeft="5dp"
            android:text="@string/save" />
    
    </RelativeLayout>
    

    【讨论】:

      【解决方案3】:

      更改此代码:

      <RadioGroup
              android:id="@+id/save_selection_group"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:orientation="horizontal"
              android:layout_alignBaseline="@+id/save_txt"
              android:layout_toRightOf="@+id/save_txt" >
      
      
          <RadioButton
              android:id="@+id/radio0"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignBaseline="@+id/save_txt"
              android:layout_alignBottom="@+id/save_txt"
              android:layout_toRightOf="@+id/save_selection_group"
              android:checked="true"
              android:text="SD" />
      
          <RadioButton
              android:id="@+id/radio1"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_alignBaseline="@+id/radio0"
              android:layout_alignBottom="@+id/radio0"
              android:layout_toRightOf="@+id/radio0"
              android:text="Phone" />
       </RadioGroup>
      

      【讨论】:

        【解决方案4】:

        像这样改变你的xml:

        <?xml version="1.0" encoding="utf-8"?>
        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#ffffff" >
        
            <RadioGroup
                android:id="@+id/save_selection_group"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="horizontal"
                android:layout_alignBaseline="@+id/save_txt"
                android:layout_toRightOf="@+id/save_txt" >
        
        
            <RadioButton
                android:id="@+id/radio0"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBaseline="@+id/save_txt"
                android:layout_alignBottom="@+id/save_txt"
                android:layout_toRightOf="@+id/save_selection_group"
                android:checked="true"
                android:text="SD" />
        
            <RadioButton
                android:id="@+id/radio1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignBaseline="@+id/radio0"
                android:layout_alignBottom="@+id/radio0"
                android:layout_toRightOf="@+id/radio0"
                android:text="Phone" />
            </RadioGroup>
        
            <TextView
                android:id="@+id/save_txt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_alignParentTop="true"
                android:layout_marginTop="22dp"
                android:paddingTop="5dp"
                android:text="savegsdg" />
        
            <TextView
                android:id="@+id/save_name_txt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/save_txt"
                android:layout_marginTop="50dp"
                android:text="fdgg" />
        
            <EditText
                android:id="@+id/save_name_edt"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/save_txt"
                android:layout_toRightOf="@+id/save_name_txt"
                android:layout_alignBaseline="@+id/save_name_txt"
                android:layout_marginLeft="15dp"
                android:paddingBottom="10dp"
                android:ems="8" >
        
                <requestFocus />
            </EditText>
        
            <Button
                android:id="@+id/save_voice_note_button"
                style="?android:attr/buttonStyleSmall"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/save_txt"
                android:layout_toRightOf="@+id/save_name_edt"
                android:layout_alignBaseline="@+id/save_name_edt"
                android:layout_marginLeft="5dp"
                android:text="fdgdfg" />
        
        </RelativeLayout>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-07-24
          • 1970-01-01
          • 1970-01-01
          • 2017-06-28
          • 1970-01-01
          • 2016-09-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多