如果选择了另一个,我已使用以下代码段设置一个单选按钮取消选中,但是当我运行应用程序并选择两个单选按钮时,代码不起作用,因为两者都保持选中状态。
我正在使用相对布局,因此我无法使用任何其他解决方案与收音机组,我只是使用两个单独的单选按钮。
有人可以指出我在某处可能出错的地方,因为我看不出逻辑中的缺陷,有什么想法吗?
无论如何,这是我试图实现的解决方案,但它在应用程序中无效:
public void onRadioButtonClicked(View view) {
// Is the button now checked?
boolean checked = ((RadioButton) view).isChecked();
// Check which radio button was clicked
switch(view.getId()) {
case R.id.radBtnMM:
if (checked)
//set inch button to unchecked
radioInch.setChecked(false);
break;
case R.id.radBtnInch:
if (checked)
//set MM button to unchecked
radioMM.setChecked(false);
break;
}
}
答案 0 :(得分:8)
你的public void onRadioButtonClicked(View view)
何时被召唤?
是听众吗?
这将有效:
layout.xml:
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radBtnMM"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radBtnInch"
/>
YourActivity.java:
public class MainActivity extends Activity implements OnCheckedChangeListener {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
setContentView(R.layout.activity_main);
rb1 = (RadioButton) findViewById(R.id.radBtnInch);
rb1.setOnCheckedChangeListener(this);
rb2 = (RadioButton) findViewById(R.id.radBtnMM);
rb2.setOnCheckedChangeListener(this);
return true;
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
if (buttonView.getId() == R.id.radBtnInch) {
rb2.setChecked(false);
}
if (buttonView.getId() == R.id.radBtnMM) {
rb1.setChecked(false);
}
}
}
答案 1 :(得分:1)
试试这个......
public void onRadioButtonClicked(View view) {
// Is the button now checked?
boolean checked = ((RadioButton) view).isChecked();
// Check which radio button was clicked
switch (view.getId()) {
case R.id.radioBtnMM:
// set inch button to unchecked
radioBtnInch.setChecked(!checked);
break;
case R.id.radioBtnInch:
// set MM button to unchecked
radioBtnMM.setChecked(!checked);
break;
}
}
答案 2 :(得分:0)
试试这个:
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.radBtnMM:
if (checked)
{
radioInch.setChecked(false);
}
else
{
radioInch.setChecked(true);
}
break;
case R.id.radBtnInch:
if (checked)
{
radioMM.setChecked(false);
}
else
{
radioMM.setChecked(true);
}
break;
}
}