라디오 그룹 없이 라디오 버튼을 선택 취소하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com//questions/21061997

  •  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;
        }
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top