web-dev-qa-db-ja.com

RadioGroup:プログラムで確認する方法

XMLからRadioGroupを作成します

    <RadioGroup Android:id="@+id/option" 
        Android:layout_width="match_parent"
        Android:orientation="horizontal" 
        Android:checkedButton="@+id/block_scenario_off"
        Android:layout_height="wrap_content">
        <RadioButton 
            Android:layout_width="0dip"
            Android:layout_weight="1" 
            Android:text="@string/option1" 
            Android:layout_height="wrap_content" 
            Android:id="@+id/option1"
            Android:layout_gravity="center|left" 
            Android:onClick="@string/on_click"/>
        <RadioButton 
            Android:layout_width="0dip"
            Android:layout_weight="1" 
            Android:text="@string/option2" 
            Android:onClick="@string/on_click"
            Android:layout_height="wrap_content"
            Android:layout_gravity="center" 
            Android:id="@+id/option2"/>
        <RadioButton 
            Android:layout_width="0dip"
            Android:layout_weight="1" 
            Android:text="@string/option3"
            Android:onClick="@string/on_click" 
            Android:layout_height="wrap_content"
            Android:layout_gravity="center|right" 
            Android:id="@+id/option3" />
    </RadioGroup>

Javaコードでは、アクティビティの作成(onCreate())の最初のコードを次のようにプログラムでチェックします。

    mOption = (RadioGroup) findViewById(R.id.option);
    mOption.check(R.id.option1);

ただし、アクティビティが表示されるとき、ラジオボタンはチェックされません。助けがありますか?

44
Bao Le

レイアウトで、選択するCheckBoxに_Android:checked="true"_を追加できます。

または、プログラムで、チェック可能なインターフェイスで定義されたsetCheckedメソッドを使用できます。

RadioButton b = (RadioButton) findViewById(R.id.option1); b.setChecked(true);

62
Blackbelt

いくつかの変数の値に基づいてラジオボタンをチェックする場合は、これを試してください。 「genderStr」の場合、次のコードスニペットを使用できます

    if(genderStr.equals("Male"))
       genderRG.check(R.id.maleRB);
    else 
       genderRG.check(R.id.femaleRB);
32

コードのonCreateメソッドでラジオボタンを宣言して使用する必要がある場合があります。

RadioButton rb1 = (RadioButton) findViewById(R.id.option1);
rb1.setChecked(true);
25
vik

気を付けて! setChecked()でラジオボタンをチェックしても、RadioGroup内の状態は変わりません。たとえば、radioGroupのこのメソッドは、間違った結果を返します:getCheckedRadioButtonId()

常にradioGroupを確認します

mOption.check(R.id.option1);

あなたは警告されています;)

18
AndrewBloom

ラジオグループをつかみ、子供たちを見て、チェックされていないものがあるかどうかを確認します。

RadioGroup rg = (RadioGroup) view;
int checked = savedInstanceState.getInt(wrap.getAttributeName());

if(checked != -1) {
    RadioButton btn = (RadioButton) rg.getChildAt(checked);
    btn.toggle();
}
13
Mateusz Mazur

また、getChildAt()メソッドを使用できます。このような:

mOption = (RadioGroup) findViewById(R.id.option);
((RadioButton)mOption.getChildAt(0)).setChecked(true);
12
Levor

ラジオグループのインデックスを操作しているときにこのコードを使用します。

radioGroup.check(radioGroup.getChildAt(index).getId());
9
Seref Bulbul

mOption.check(R.id.option1);onAttachedToWindowメソッドに入れるか、次のようにすると機能します:

view.post(new Runnable()
{
    public void run() 
    {
        // TODO Auto-generated method stub
        mOption.check(R.id.option1); 
    }
});

その理由は、ラジオグループが実際にレンダリングされたときにのみcheckメソッドが機能するためかもしれません。

8
david

ラジオグループのgetId()で作業中にこのコードを使用します:

radiogroup.check(radiogroup.getChildAt(0).getId());

radioGroupの設計に従って位置を設定します

これがあなたを助けることを願っています!