Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 选中的单选按钮没有返回正确的值。_Android_Android Layout - Fatal编程技术网

Android 选中的单选按钮没有返回正确的值。

Android 选中的单选按钮没有返回正确的值。,android,android-layout,Android,Android Layout,在我的XML布局中,我定义了3个单选按钮。第一个按钮已设置为checked=“true” 在同一个文件中,我定义了一个onRadioButtonClick()方法 public void onRadioButtonClick(View v) { boolean checked = ((RadioButton) v).isChecked(); switch(v.getId()) { case R.id.radioButton1:

在我的XML布局中,我定义了3个单选按钮。第一个按钮已设置为
checked=“true”

在同一个文件中,我定义了一个
onRadioButtonClick()
方法

public void onRadioButtonClick(View v)
    {
        boolean checked = ((RadioButton) v).isChecked();

         switch(v.getId()) {
     case R.id.radioButton1:    
    if (checked){
        MyButton = "1P";
    }
    break;

case R.id.radioButton2:
    if (checked){
        MyButton = "2P";
    }
    break;

case R.id.radioButton3:
    if (checked){
        MyButton = "3P";
    }   
    break;
     }}
public void onClick(View v) {
    Log.d("LogThis", "My Print >" +MyButton);   

}
最后,单击一个标准按钮(不是单选按钮),我定义了
onClick()
方法

public void onRadioButtonClick(View v)
    {
        boolean checked = ((RadioButton) v).isChecked();

         switch(v.getId()) {
     case R.id.radioButton1:    
    if (checked){
        MyButton = "1P";
    }
    break;

case R.id.radioButton2:
    if (checked){
        MyButton = "2P";
    }
    break;

case R.id.radioButton3:
    if (checked){
        MyButton = "3P";
    }   
    break;
     }}
public void onClick(View v) {
    Log.d("LogThis", "My Print >" +MyButton);   

}
当我单击激活
onClick
方法的标准按钮时,
MyButton
值打印为
null
。尽管在应用程序加载时选择了
radioButton1
,但仍会发生这种情况

一旦我手动选择任何其他单选按钮,这种行为就会消失。然后,
MyButton
显示正确的值

有没有其他办法来解决这个问题?我哪里做错了?我假设这是因为我实现了
onRadioButtonClick()
按钮中的逻辑。但我不确定采取什么替代方法来解决这个问题


PS:我无法使用
RadioGroup
,因为按钮需要与
表格布局中的不同列对齐。

另一种方法是在加载视图时在代码中设置默认选中的单选按钮,同时设置
MyButton
变量。例如:

rb1 = (RadioButton) findViewById(R.id.radioButton1);
rb2 = (RadioButton) findViewById(R.id.radioButton2);
rb3 = (RadioButton) findViewById(R.id.radioButton3);

rb1.setChecked(true);
MyButton = "1P";
根据需要,您需要比较RadioButton对象(通过调用它们自己的
getId()
,而不是将
View.getId()
R.id.radioButtonX

e、 g


我喜欢这个简单而有效的建议:)。我想再等一段时间,看看是否有人能解释我是否在编程和/或设计上出错,只是为了能够改进我的编码:)整个事情都在
onradiobutton中单击
,不单击任何单选按钮它能工作吗?如果在开关块中添加
默认值
框,它会工作。
rb1 = (RadioButton) findViewById(R.id.radioButton1);

switch(v.getId()) {
  case   (rb1.getId()) //NOT R.id.radioButton1:    
    if (checked){
        MyButton = "1P";
    }
    break;