2014-01-11 4 views
4

다음 코드 조각을 사용하여 다른 하나를 선택하면 하나의 라디오 단추를 선택 취소하지만 응용 프로그램을 실행하고 두 라디오 단추를 모두 선택하면 코드가 모두 선택 상태로 유지되지 않으므로 코드가 작동하지 않습니다.라디오 그룹이없는 라디오 버튼의 선택을 취소 하시겠습니까?

나는 라디오 그룹과 함께 다른 솔루션을 사용할 수 없도록 상대 레이아웃을 사용하고 있으며 두 개의 별도 라디오 버튼을 사용하고 있습니다.

논리에서 결함을 볼 수 없기 때문에 내가 어딘가에서 잘못 될 수있는 곳을 누군가 지적 할 수 있습니까?

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; 
     } 
    } 

답변

6

라고 :

어쨌든 이것은 내가 구현하기 위해 노력하고 있지만이 응용 프로그램에서 작동하지 않는 해결책은 무엇입니까? 청취자로부터 왔습니까?

이 작동합니다

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); 
     } 
    } 
    } 
+0

을 나는이 수정을 시도하지만 난 ' 라디오 버튼이 설정된 곳에서 다음과 같은 오류가 발생합니다. o 'this' : CompoundButton 유형의 메소드 setOnCheckedChangeListener (CompoundButton.OnCheckedChangeListener)가 인수 (MainActivity)에 적용 가능한 이 아닙니다. –

+0

죄송합니다. 귀하의 액티비티가 OnCheckedChangeListener를 구현해야한다는 것을 잊었습니다. 내 응답에이 행을 추가했습니다. 'public class MainActivity extends Activity extends OnCheckedChangeListener {' –

+0

그걸로 일했습니다. 건배 –

1

이 시도 ... 당신의 public void onRadioButtonClicked(View view)

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; 
    } 
} 
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; 
     } 
    } 
관련 문제