4つのラジオボタンを作成しましたが、いずれかがクリックされたときに状態を保存してから、その保存された状態をアプリケーションで使用したいのですが、どうすればよいですか?
myOption1.setChecked(true);
myOption2.setChecked(true);
myOption3.setChecked(true);
myOption4.setChecked(true);
4つのラジオボタンを作成しましたが、いずれかがクリックされたときに状態を保存してから、その保存された状態をアプリケーションで使用したいのですが、どうすればよいですか?
myOption1.setChecked(true);
myOption2.setChecked(true);
myOption3.setChecked(true);
myOption4.setChecked(true);
アクティビティでonSaveInstanceState()とonRestoreInstanceState( ) をオーバーライドします。
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putBoolean("myOption1", myOption1.isChecked());
savedInstanceState.putBoolean("myOption2", myOption2.isChecked());
savedInstanceState.putBoolean("myOption3", myOption3.isChecked());
savedInstanceState.putBoolean("myOption4", myOption4.isChecked());
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
myOption1.setChecked(savedInstanceState.getBoolean("myOption1"));
myOption2.setChecked(savedInstanceState.getBoolean("myOption2"));
myOption3.setChecked(savedInstanceState.getBoolean("myOption3"));
myOption4.setChecked(savedInstanceState.getBoolean("myOption4"));
}
全部で 4 つのラジオ ボタンしかない場合は、それらの「値」をSharedPreferences
(永続ストレージ) に保存することもできます。
例:
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor shEditor = sharedPreferences.edit();
shEditor.putBoolean("checkbox_1", myOptionOne.isChecked());
shEditor.putBoolean("checkbox_2", myOptionTwo.isChecked());
shEditor.putBoolean("checkbox_3", myOptionThree.isChecked());
shEditor.putBoolean("checkbox_4", myOptionFour.isChecked());
shEditor.commit();
次のようにして使用します。
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
myOptionOne.setChecked(sharedPreferences.getBoolean("checkbox_1", false));
myOptionTwo.setChecked(sharedPreferences.getBoolean("checkbox_2", false));
myOptionThree.setChecked(sharedPreferences.getBoolean("checkbox_3", false));
myOptionFour.setChecked(sharedPreferences.getBoolean("checkbox_4", false));
その値を sharedPreferences コンセプトに保存します。チェックボックスの値の状態を自動的に取得して設定に保存する addPreferencesFromResource() という定義済みのメソッドを使用するサンプル例がここに配置されています。
public class EditPreference extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.checkboxpref);
addPreferencesFromResource(R.layout.checkboxpref);
}
}
そしてレイアウトコードはこれでなければなりません:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:key="@string/checkbox_pref"
android:title="@string/eidt_preferences">
<CheckBoxPreference
android:key="@string/pref_12_time_format"
android:title="@string/time_formats"
android:summary="@string/twelve_hour"
android:defaultValue="true"/>
<CheckBoxPreference
android:key="@string/pref_show_current_location"
android:title="@string/show_current_location"
android:summary="@string/using_gps_network"
android:defaultValue="true"/>
<CheckBoxPreference
android:key="@string/pref_display_date"
android:title="@string/display_date"
android:defaultValue="true"/>
</PreferenceScreen>
これで、保存されたチェックボックスの値が次のように取得されました。
SharedPreferences sharedPreference = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
mTimeFormat = sharedPreference.getBoolean("pref_12_time_format", false);
mServiceType = sharedPreference.getBoolean(
"pref_show_current_location", false);
mDisplayDate = sharedPreference.getBoolean("pref_display_date", false);