スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ラジオボタンのはまりどころ。


ラジオで選択された値を設定として保存する際に、R.idの値を利用してはいけない。
idが追加された際に値が変更になることがある。
そのため、旧バージョンで設定としてidを保存して、新しいアプリを起動すると、旧radioと結びつかない
なんて事があります。

レイアウト



<RadioGroup android:id="@+id/radio_group"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/radio1"
android:id="@+id/radio1" />
<RadioButton android:id="@+id/radio2"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/radio2" />
<RadioButton android:id="@+id/radio3"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="@string/radio3" />
</RadioGroup>





ソース



int radioId=preferences.getInt(KEY, R.id.radio1);
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radio_group);
//保存した値をR.idに変換すること
radioGroup.check(radioId);//駄目なコード
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(
RadioGroup group,
int checkedId) {
//ここでちゃんと定数に変換すること。
preferences.edit().putInt(KEY, checkedId).commit();//駄目なコード
}
});



もしくはですが、
getResources().getIdentifier("radio1","id", getPackageName());
とするとちゃんとR.id.radio1の「値」が取得出来るので、
素直に変数名を保存してしまうのが吉


変数名というか、idとして指定した時の名前は以下で取得可能
String resourceEntryName = getResources().getResourceEntryName(id)
関連記事

コメントの投稿

非公開コメント

スポンサードリンク
アプリ一覧
最新記事
最新コメント
最新トラックバック
検索フォーム
月別アーカイブ
カテゴリ
RSSリンクの表示
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。