2011-07-27 9 views
2

私はこれを持っています3ラジオボタン、ラジオ1、ラジオ2、ラジオ3と仮定しましょう。私がしたのは、ラジオ1とラジオ2をチェックした場合、ラジオ3はチェックされなくなります。だから私は一度に2つのボタンを確認することができます。Androidのラジオボタンのチェックを外します

これをクリックすると、チェックされたラジオボタンがすべてオフになります。今私の問題はラジオ1とラジオ2をチェックしてクリアしようとするときです。ラジオ1とラジオ2がもうチェックされなくても、ラジオ3はクリック可能ではありません。

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

そのため、あなたはradio1radio2を選択したとき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); 

        } 
} 

}      
関連する問題