私が知る限り、設定時と同じキーを使用していますが、設定は保存されません。明らかな何かが欠けていると確信しています。
現在の設定をロードして新しい設定を設定するカスタム DialogPreference 。
public class SemesterDialogPreference extends DialogPreference {
View view;
SharedPreferences settings;
String semester_id_key = this.getContext().getApplicationContext().getString(R.string.pref_semester_id);
DBAdapter db;
@Override
public void onBindDialogView(View view){
this.view = view;
settings = getSharedPreferences();
int curSemesterId = settings.getInt(semester_id_key, 1);
System.out.println("Incoming " + semester_id_key + " equals " + curSemesterId);
// Here I do stuff...
super.onBindDialogView(view);
}
public SemesterDialogPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setDialogLayoutResource(R.layout.dialog_set_semester);
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
// Do things and set newId
System.out.println("new int for " + semester_id_key + " is " + newId);
Editor editor = getEditor();
editor.putInt(semester_id_key, newId);
editor.commit();
}
}
私の PreferenceScreen の XML
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<PreferenceCategory android:title="@string/pref_header_settings" >
<com.NsouthProductions.gradetrackerpro.SemesterDialogPreference
android:title="@string/pref_title_semester"
android:summary="@string/pref_summary_semester"
android:key="@string/pref_semester_id"
android:dialogMessage="Are you sure?"
android:positiveButtonText="Clear Questss"
android:negativeButtonText="Cancel"/>
</PreferenceCategory>
</PreferenceScreen>
また、オンラインの例にパラメータが含まれていない理由がわかりませんgetSharedPreferences()
。それが、Androidが使用するファイルを知っている方法だと思いました。