라디오 그룹 없이 라디오 버튼을 선택 취소하는 방법은 무엇입니까?
-
26-12-2019 - |
문제
다음 코드 조각을 사용하여 다른 라디오 버튼이 선택된 경우 하나의 라디오 버튼을 선택 취소하도록 설정했지만 응용 프로그램을 실행하고 두 라디오 버튼을 모두 선택하면 둘 다 선택된 상태로 유지되므로 코드가 작동하지 않습니다.
나는 라디오 그룹에 다른 솔루션을 사용할 수 없도록 상대 레이아웃을 사용하고 있으며, 두 개의 별도 라디오 버튼만 사용하고 있습니다.
논리나 아이디어에서 결함을 볼 수 없기 때문에 누군가 내가 어디에서 잘못될 수 있는지 지적할 수 있습니까?
어쨌든 이것은 내가 구현하려고 하는 솔루션이지만 응용 프로그램에서는 작동하지 않습니다.
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;
}
}
해결책
당신의 ~가 언제인지 public void onRadioButtonClicked(View view)
라고 불리는?청취자의 말인가요?
이것은 작동합니다:
레이아웃.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);
}
}
}
다른 팁
Try this...
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;
}
}
Try This:
@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;
}
}
제휴하지 않습니다 StackOverflow