私はそのような機能を持ちたいと思っています.2つのRadioButtonsを持つRadioGroupがあるダイアログ(設定付き)があります。「保存」ボタンでダイアログを閉じると、Data クラスにデータを保存するだけでなく、次にダイアログを開いたときに、保存された設定でダイアログを開く必要があります。RadiGroup のメソッド getCheckedRadioButtonId() と .check(int) でこれを達成しようとしましたが、解決策が機能せず、理由がわかりません。
私のコード:
SettingsDialogFragment.java
public class SettingsDialogFragment extends DialogFragment{
private boolean ifMale;
private int checkedRadio;
private RadioGroup rg;
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the Builder class for convenient dialog construction
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.settings);
View view = LayoutInflater.from(getActivity()).inflate(R.layout.settings_dialog, null);
builder.setView(view);
builder.setPositiveButton(R.string.save, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Data.ifMale = ifMale;
checkedRadio = rg.getCheckedRadioButtonId();
System.out.println("numer radio" +checkedRadio);
}
});
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// User cancelled the dialog
}
});
rg = (RadioGroup) view.findViewById(R.id.radio_group);
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch(checkedId) {
case R.id.radio_female:
//Log.v("RadioGroup", "female");
ifMale = false;
break;
case R.id.radio_male:
Log.v("RadioGroup","male");
ifMale = true;
break;
}
}
});
rg.check(checkedRadio);
return builder.create();
}
}
settings_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RadioGroup android:id="@+id/radio_group"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<RadioButton android:id="@+id/radio_female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/female"/>
<RadioButton android:id="@+id/radio_male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/male"/>
</RadioGroup>
</LinearLayout>