android中的单选按钮不起作用

Posted

技术标签:

【中文标题】android中的单选按钮不起作用【英文标题】:radiobutton in android doesn't work 【发布时间】:2017-02-02 20:47:50 【问题描述】:

在这个程序中,我使用单选按钮。目前我在使用 2 号按钮 (button2) 时遇到了一些问题,事实上当它被按下时,什么也没有发生!

当我按下button2 时,它应该在“TextView”中显示每个单选按钮的名称 (而button1 用于清除选择单选按钮)。 任何人都可以帮助我或给我任何提示吗?谢谢。

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;    

public class RadiobuttonActivity extends Activity      

    Button      button1;
    Button      button2;
    TextView    textView1;
    RadioButton r1;
    RadioButton r2;
    RadioButton r3;     

    RadioGroup  radioGroup1;     

    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button1 = (Button) findViewById(R.id.button1);
        button2 = (Button) findViewById(R.id.button2);
        textView1 = (TextView) findViewById(R.id.textView1);
        radioGroup1 = (RadioGroup) findViewById(R.id.radioGroup1);
        r1 = (RadioButton) findViewById(R.id.r1);
        r2 = (RadioButton) findViewById(R.id.r2);
        r3 = (RadioButton) findViewById(R.id.r3);     

        button1.setOnClickListener(new OnClickListener()      

            @Override
            public void onClick(View arg0) 
                radioGroup1.clearCheck();
                textView1.setText("AllUnChecked");     
            
        );     

        button2.setOnClickListener(new OnClickListener()      

            @Override
            public void onClick(View arg0) 
                int selectedid = radioGroup1.getCheckedRadioButtonId();
                switch (selectedid) 
                    case 0:
                        textView1.setText("Red");
                        break;
                    case 1:
                        textView1.setText("Green");
                        break;
                    case 2:
                        textView1.setText("Black");
                        break;
                
            
        );     
    


这是 main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_
        android:layout_
        android:orientation="vertical" >

        <RadioGroup
            android:id="@+id/radioGroup1"
            android:layout_
            android:layout_ >



            <RadioButton
                android:id="@+id/r1"
                android:layout_
                android:layout_
                android:checked="true"
                android:text="Red" />



            <RadioButton
                android:id="@+id/r2"
                android:layout_
                android:layout_
                android:text="Green" />



            <RadioButton
                android:id="@+id/r3"
                android:layout_
                android:layout_
                android:text="Black" />

        </RadioGroup>


        <Button
            android:id="@+id/button1"
            android:layout_
            android:layout_
            android:text="AllUnchecked" />


        <Button
            android:id="@+id/button2"
            android:layout_
            android:layout_
            android:text="Witch radio button is ckecked?" />


        <TextView
            android:id="@+id/textView1"
            android:layout_
            android:layout_
            android:text="Text View"
            android:textAppearance="?android:attr/textAppearanceLarge" />

    </LinearLayout>

and this is main.xml file:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical" >

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_
        android:layout_ >



        <RadioButton
            android:id="@+id/r1"
            android:layout_
            android:layout_
            android:checked="true"
            android:text="Red" />



        <RadioButton
            android:id="@+id/r2"
            android:layout_
            android:layout_
            android:text="Green" />



        <RadioButton
            android:id="@+id/r3"
            android:layout_
            android:layout_
            android:text="Black" />

    </RadioGroup>


    <Button
        android:id="@+id/button1"
        android:layout_
        android:layout_
        android:text="AllUnchecked" />


    <Button
        android:id="@+id/button2"
        android:layout_
        android:layout_
        android:text="Witch radio button is ckecked?" />


    <TextView
        android:id="@+id/textView1"
        android:layout_
        android:layout_
        android:text="Text View"
        android:textAppearance="?android:attr/textAppearanceLarge" />

【问题讨论】:

请显示 XML 布局。 这里的代码没有明显的问题。我建议在你的事件监听器中设置一个断点,并使用 Android Studio 中的调试来确定发生了什么。 这是 main.xml : @Alien_x 您不应该发布您的附加代码作为答案。相反,您应该单击编辑然后添加它。 请编辑您原来的问题。 【参考方案1】:

如this SO post中所述

代替使用:

int selectedid = radioGroup1.getCheckedRadioButtonId();

使用这个:

 int selectedid = radioGroup1.indexOfChild(findViewById(radioGroup1.getCheckedRadioButtonId()));

【讨论】:

通过单击左侧的标志来标记它。谢谢

以上是关于android中的单选按钮不起作用的主要内容,如果未能解决你的问题,请参考以下文章

带有工具栏的菜单中的单选按钮样式不起作用

UITableview 内的单选按钮不起作用

C# WPF:当单选按钮显示为图像时,数据网格中的单选按钮分组不起作用

.click() 在单选按钮上不起作用

默认选中的单选输入在 Laravel 中使用 Bootstrap 语法不起作用

Twitter引导单选按钮不起作用