0

私が知る限り、設定時と同じキーを使用していますが、設定は保存されません。明らかな何かが欠けていると確信しています。

現在の設定をロードして新しい設定を設定するカスタム 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が使用するファイルを知っている方法だと思いました。

4

3 に答える 3

0

http://developer.android.com/guide/topics/data/data-storage.html を参照

次のようにします:

SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
  SharedPreferences.Editor editor = settings.edit();
  editor.putBoolean("silentMode", mSilentMode);

  // Commit the edits!
  editor.commit();
于 2014-08-01T17:41:13.173 に答える
0

次のようにエディターを呼び出す必要があります。

...

View view;
SharedPreferences settings;
SharedPreferences.Editor editor;

...

次に、次の部分で:

settings = PreferenceManager.getDefaultSharedPreferences(this); // if this doesnt work, try getApplicationContext()

editor = settings.edit();
editor.putInt(semester_id_key, newId);
editor.commit();

ノート:

非同期であるため、可能な限りでapply()はなく使用することをお勧めしますが、どちらも機能します。commit()

于 2014-08-01T17:42:43.147 に答える