RadioGroup
sを使用してRadioButton
を動的に作成しており、デフォルトで1つのラジオボタンをオンにする必要があります。
radioButton.setChecked(true)
とradioButton.toggle();
の両方を使用してこれを実行しました
私が抱えている問題は、実行時に別のラジオボタンを選択すると、最初のボタンがチェックされたままになるため、ラジオグループに2つのチェックされたラジオボタンが表示されることです。
誰かがこの問題を抱えていて、それを解決する方法を知っていますか?
private RadioButton addRadioButton(String type, String price){
RadioButton radio = new RadioButton(Order.this);
radio.setText(type + " (" + Utils.formatCurrency(price) + ")");
radio.setTextAppearance(Order.this, R.style.portalCellTextStyle);
radio.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10);
radio.setTag(price);
if(type.toLowerCase().equals("m"))
radio.toggle();
return radio;
}
私は遅れていることを知っていますが、私のような答えを探している人にとっては、これは役に立ちます。
RadioButtonをRadioGroupに追加するときは、次のように、親に追加した後にチェックされるボタンを設定する必要があります。
RadioGroup radioGroup = new RadioGroup(getContext())
RadioButton radioButton = new RadioButton(getContext());
radioButton.setText("text");
mRadioGroup.addView(radioButton);
radioButton.setChecked(true);
親に追加する前にビューをチェックすると、チェックを外すことはできません。
これは簡単に行うことができます。
Java:
radiogroup =(RadioGroup)findViewById(R.id.radiogroup);
radiobutton1 =(RadioButton)findViewById(R.id.radiobutton1);
radiobutton2 =(RadioButton)findViewById(R.id.radiobutton2);
if(your first assessment){
radiobutton1.setChecked(true);
}else{
radiobutton2.setChecked(true);
}
XML:
<RadioGroup
Android:id="@+id/radiogroup"
Android:orientation="horizontal"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content">
<RadioButton
Android:id="@+id/radiobutton1"
Android:checked="true"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
<RadioButton
Android:id="@+id/radiobutton2"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content" />
</RadioGroup>
簡単です。最初に画面をロードして、In Getview
メソッドの位置を確認してから、条件を適用します。
if (position == 0) {
holder.act_delivery_rbtn.setChecked(true);
}
オンとオフのチェックに1つのラジオボックスのみを使用している場合は、代わりにチェックボックスまたはトグルボタンを使用する必要があります。
http://developer.Android.com/resources/tutorials/views/hello-formstuff.html
下にスクロールして、チェックボックスとトグルボタンを確認します。
ラジオを使用する場合、通常は複数のラジオがあり、その中から選択します。簡単、中、難しいのように。
交換
radio.toggle();
と
radio.setChecked(true);
コードでchecked = "true"にするだけです
あなたはラジオグループでそれをチェックするべきです...
radiogroup.check(IdOfYourButton)
clearCheck()関数を使用して、すでにチェックされているボタンをクリアします。これで問題が解決することを願っています。
OnCheckedChangeListener()を設定した直後に、無線グループでchecked()メソッドを呼び出したため、すぐに呼び出され、何らかの理由でNPEがスローされたことが判明しました。
Checked()メソッド呼び出しをOnCheckedChangeListener()の直前に移動し、動作するようになりました。
radios.check(2);
radios.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
}
});
private RadioButton addRadioButton(String type, String price){
RadioButton radio = new RadioButton(Order.this);
radio.setText(type + " (" + Utils.formatCurrency(price) + ")");
radio.setTextAppearance(Order.this, R.style.portalCellTextStyle);
radio.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10);
radio.setTag(price);
if(type.toLowerCase().equals("m"))
radio.setId(2);
return radio;
}