2011-07-27 6 views
2

3 개의 라디오 버튼이 있습니다. 라디오 1, 라디오 2, 라디오 3을 가정 해 봅니다. 내가 한 일은 내가 radio1과 radio2를 검사하면 radio3는 검사 할 수 없을 것입니다. 따라서 한 번에 2 개의 버튼 만 확인할 수 있습니다.Android 라디오 버튼을 선택 취소

내가이 버튼을 클릭하면 체크 된 모든 라디오 버튼이 선택 취소됩니다. 이제 내 문제는 내가 radio1과 radio2를 확인하고 그것을 지우려고 할 때이다. 라디오 1과 2가 더 이상 확인되지 않아도 라디오 3은 계속 클릭 할 수 없습니다. 당신이 radio1radio2을 선택하면

RadioButton radio1; 
RadioButton radio2; 
RadioButton radio3; 
Button clear; 
TextView tv; 

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.secondxml); 
radio1 = (RadioButton) findViewById(R.id.rd1); 
radio2 = (RadioButton) findViewById(R.id.rd2); 
radio3 = (RadioButton) findViewById(R.id.rd3); 
radio1.setOnCheckedChangeListener(this); 
radio2.setOnCheckedChangeListener(this); 
radio3.setOnCheckedChangeListener(this); 
tv = (TextView) findViewById(R.id.tv); 
clear = (Button) findViewById(R.id.clear); 
clear.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 
     // TODO Auto-generated method stub 
    radio1.setChecked(false); 
    radio2.setChecked(false); 
    radio3.setChecked(false); 
    tv.setText(""); 
    } 
}); 
} 

@Override 
public void onCheckedChanged(CompoundButton arg0, boolean arg1) { 
    // TODO Auto-generated method stub 
    if(radio1.isChecked() && radio2.isChecked()){ 
     tv.setText("Radio1 and 2 is checked "); 
     radio3.setClickable(false); 
    } 
    if(radio1.isChecked() && radio3.isChecked()){ 
      radio2.setClickable(false); 
     tv.setText("radio 1 and 3 is checked"); 

    } 
    if(radio2.isChecked() && radio3.isChecked()){ 
     radio1.setClickable(false); 
     tv.setText("radio2 and 3 is checked"); 

    } 
} 

}

답변

4

당신은 그러므로 radio3.setClickable(false);를 호출하여 클릭 할 수 없습니다하는 radio3을 설정했습니다. 삭제 버튼으로이를 취소 할 수 없습니다.

난 당신이 기본 상태로 다시 데려, 당신은 선택을 취소 할 때이를 사용하지 그만 것

radio1.setClickable(true); 
radio2.setClickable(true); 
radio3.setClickable(true); 

이 전화를하여 명확한 OnClickListener 대한 onClick(...) 방법에 제안한다.

1

실제로 라디오 그룹과 달리 개별 라디오 버튼을 사용할 때 키는 radio.isSelected()를 사용하여 버튼의 현재 상태를 찾습니다.

터치 리스너에 내가 가지고 있던 비슷한 문제 해결 내이 코드 :

 OnClickListener radio_button_click = (new OnClickListener() { 

public void onClick(View v) { 
        RadioButton rb = (RadioButton) v; 

        if(rb.isSelected()==true) { 
         rb.setSelected(false); 
         rb.setChecked(false); 
         rb.setClickable(true); 

        } 
        else{ 
         rb.setSelected(true); 
        rb.setClickable(true); 

        } 
} 

}      
관련 문제