web-dev-qa-db-ja.com

デフォルトのチェック済みラジオボタンを設定

RadioGroupsを使用して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;
    }
9
thehindutimes

私は遅れていることを知っていますが、私のような答えを探している人にとっては、これは役に立ちます。

RadioButtonをRadioGroupに追加するときは、次のように、親に追加した後にチェックされるボタンを設定する必要があります。

RadioGroup radioGroup = new RadioGroup(getContext())
RadioButton radioButton = new RadioButton(getContext());
radioButton.setText("text");
mRadioGroup.addView(radioButton);
radioButton.setChecked(true);

親に追加する前にビューをチェックすると、チェックを外すことはできません。

10
Sergio Carvalho

これは簡単に行うことができます。

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>
4
dorgelesn

簡単です。最初に画面をロードして、In Getviewメソッドの位置を確認してから、条件を適用します。

if (position == 0) {
  holder.act_delivery_rbtn.setChecked(true);
}
2
Maulik Santoki

オンとオフのチェックに1つのラジオボックスのみを使用している場合は、代わりにチェックボックスまたはトグルボタンを使用する必要があります。

http://developer.Android.com/resources/tutorials/views/hello-formstuff.html

下にスクロールして、チェックボックスとトグルボタンを確認します。

ラジオを使用する場合、通常は複数のラジオがあり、その中から選択します。簡単、中、難しいのように。

交換

radio.toggle();

radio.setChecked(true);
1
SilentKiller

コードでchecked = "true"にするだけです

1

あなたはラジオグループでそれをチェックするべきです...

radiogroup.check(IdOfYourButton)
0
nitesh goel

clearCheck()関数を使用して、すでにチェックされているボタンをクリアします。これで問題が解決することを願っています。

0
Yogamurthy

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