2012-06-14 9 views
11

私はデフォルトで1つのRadioButtonをチェックしてAndroidでRadioGroupを構築しようとしています。私は、これがプログラム的にではなく、XMLを介して行うことが可能かどうか疑問に思っています。RadioGroup checkedButtonプロパティ

error: Error: No resource found that matches the given name (at 'checkedButton' with value '@id/rdb_positive') 

コードは次のとおりです:

次のコードスニペットは、私はエラーを取得していますように動作するようには思えない

<RadioGroup 
    style="@style/FormInputField" 
    android:orientation="vertical" 
    android:checkedButton="@id/rdb_positive"> <!-- Error on this line --> 
    <RadioButton 
     android:id="@+id/rdb_positive" 
     android:text="@string/answer_positive" /> 
    <RadioButton 
     android:id="@+id/rdb_negative" 
     android:text="@string/answer_negative" /> 
</RadioGroup> 

それとして、道に意味を成しませんRadioButtonのidは、RadioGroupの属性が設定された後に定義されますが、なぜそのような属性が使用できるのか不思議です。

答えて

23

使用android:checkedButton="@+id/rdb_positive"、私はあなたがその作品

+7

デフォルトとして作りたいラジオボタンに= "true" をチェックします新しいIDを定義すると、私はそれがうまく動作します:-)ありがとう。 – Ruben

+3

@LalitPoptani私は新しいIDとバグに使われていることを知っていますが、その解決策は '+' –

+3

に割り当てられています。 'RadioGroup'で' + 'を使うと、' rdb_positive'というIDが作成されます。したがって、 'RadioButton'では' + 'をもう一度使う必要はありません。したがって、RadioButtonで 'android:id =" @ id/rdb_positive "'を使用してください。 – faizal

2

あなたはids.xml内のid rdb_positiveを宣言することによって、そのエラーを取り除くことができ

<RadioGroup 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <RadioButton 
     android:id="@+id/rdb_positive" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:checked="true" 
     android:text="answer_positive" /> 

    <RadioButton 
     android:id="@+id/rdb_negative" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="answer_negative" /> 
</RadioGroup> 
+2

注意:デフォルトのラジオボタンでandroid:checked = "true"を設定すると、別のラジオボタンをチェックしてもチェックされません!デフォルトのボタンを正しく実装するには、RadioGroupの "android:checkedButton"属性を使用する必要があります。 – cody

2

......これを試し、その後+記号を追加すると思いますRadioGroupRadioButton要素の両方からIDを参照してください。

<RadioGroup 
    style="@style/FormInputField" 
    android:orientation="vertical" 
    android:checkedButton="@id/rdb_positive"> <!-- REFERENCE TO ids.xml --> 
    <RadioButton 
     android:id="@id/rdb_positive" 
     android:text="@string/answer_positive" /> <!-- REFERENCE TO ids.xml --> 
    <RadioButton 
     android:id="@+id/rdb_negative" 
     android:text="@string/answer_negative" /> 
</RadioGroup> 

ids.xml:

<resources> 
    <item type="id" name="rdb_positive" /> 
</resources> 
+0

"+"をIDに追加するだけです。 android:checkedButton = "@ + id/rdb_positive" – agrosner

0
<RadioGroup 
    style="@style/FormInputField" 
    android:orientation="vertical"> 
    <RadioButton 
     android:id="@+id/rdb_positive" 
     android:text="@string/answer_positive" 
     android:checked="true"/> 
    <RadioButton 
     android:id="@+id/rdb_negative" 
     android:text="@string/answer_negative" /> 
</RadioGroup> 

追加アンドロイド:あなたは私は+ため息をするために使用されたと思っ

+0

注意:デフォルトのラジオボタンでandroid:checked = "true"を設定した場合、別のラジオボタンをチェックするとチェックされません!デフォルトのボタンを正しく実装するには、RadioGroupの "android:checkedButton"属性を使用する必要があります –