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);
ただし、アクティビティが表示されるとき、ラジオボタンはチェックされません。助けがありますか?
レイアウトで、選択するCheckBox
に_Android:checked="true"
_を追加できます。
または、プログラムで、チェック可能なインターフェイスで定義されたsetCheckedメソッドを使用できます。
RadioButton b = (RadioButton) findViewById(R.id.option1); b.setChecked(true);
いくつかの変数の値に基づいてラジオボタンをチェックする場合は、これを試してください。 「genderStr」の場合、次のコードスニペットを使用できます
if(genderStr.equals("Male"))
genderRG.check(R.id.maleRB);
else
genderRG.check(R.id.femaleRB);
コードのonCreateメソッドでラジオボタンを宣言して使用する必要がある場合があります。
RadioButton rb1 = (RadioButton) findViewById(R.id.option1);
rb1.setChecked(true);
気を付けて! setChecked()
でラジオボタンをチェックしても、RadioGroup内の状態は変わりません。たとえば、radioGroupのこのメソッドは、間違った結果を返します:getCheckedRadioButtonId()
。
常にradioGroupを確認します
mOption.check(R.id.option1);
あなたは警告されています;)
ラジオグループをつかみ、子供たちを見て、チェックされていないものがあるかどうかを確認します。
RadioGroup rg = (RadioGroup) view;
int checked = savedInstanceState.getInt(wrap.getAttributeName());
if(checked != -1) {
RadioButton btn = (RadioButton) rg.getChildAt(checked);
btn.toggle();
}
また、getChildAt()メソッドを使用できます。このような:
mOption = (RadioGroup) findViewById(R.id.option);
((RadioButton)mOption.getChildAt(0)).setChecked(true);
ラジオグループのインデックスを操作しているときにこのコードを使用します。
radioGroup.check(radioGroup.getChildAt(index).getId());
mOption.check(R.id.option1);
をonAttachedToWindow
メソッドに入れるか、次のようにすると機能します:
view.post(new Runnable()
{
public void run()
{
// TODO Auto-generated method stub
mOption.check(R.id.option1);
}
});
その理由は、ラジオグループが実際にレンダリングされたときにのみcheckメソッドが機能するためかもしれません。
ラジオグループのgetId()で作業中にこのコードを使用します:
radiogroup.check(radiogroup.getChildAt(0).getId());
radioGroupの設計に従って位置を設定します
これがあなたを助けることを願っています!