web-dev-qa-db-ja.com

Android RadioButtonはsetChecked(false)メソッドを使用して設定を解除できません

初めてラジオボタンを選択するように設定すると、正常に機能します。しかし、((RadioButton)findViewById(R.id.ID))。setChecked(false);を呼び出して選択を解除すると、その後、setChecked(true)を呼び出して選択させようとしても、ユーザーが画面から選択しないと機能しません。

誰かがこれに出くわしたことがありますか?それとも私だけですか?

        if(Val != null){
        if( ((RadioButton) findViewById(R.id.ID1)).getText().toString().trim().equals(Val))
        ((RadioButton) findViewById(R.id.ID1)).setChecked(true);
        else if(((RadioButton) findViewById(R.id.ID2)).getText().toString().trim().equals(Val))
        ((RadioButton) findViewById(R.id.ID2)).setChecked(true);
        }
        else {
            ((RadioButton) findViewById(R.id.ID1)).setChecked(false);
            ((RadioButton) findViewById(R.id.ID2)).setChecked(false);
        }

Else部分が少なくとも1回実行されると、すべてが台無しになります。デバッガーをステップスルーすると、実行が正しいパスで実行され、trueに設定されていることがわかります。一度だけ実行されているので確認しました。また、コードの他の部分では、falseにリセットしていません。

22
franklins

私は解決策を見つけました。

特定のラジオボタンのチェックを外すことはできません。他の項目のみをtrueに設定できます。

したがって、チェックされたすべての項目をクリアするには、RadioGroupでclearcheck()メソッドを呼び出す必要があります。

だから私の他の部分は

        else {
            ((RadioGroup) findViewById(R.id.ID0)).clearCheck();
        }
52
franklins

見えないラジオボタンを1つ取り、それを確認します。グループの他のすべてのラジオボタンは自動的にオフになります。

2
Kushan