Androidの設定:ユーザーが設定画面を使用していないときにデフォルト値を読み込む方法


Answers

使用している場合
getSharedPreferences(String sharedPreferencesName, int sharedPreferencesMode)

使用する必要がある設定を取得する
PreferenceManager.setDefaultValues(Context context, String sharedPreferencesName, int sharedPreferencesMode, int resId, boolean readAgain)
デフォルトを設定する!

例えば:
PreferenceManager.setDefaultValues(this, PREFS_NAME, Context.MODE_PRIVATE, R.xml.preference, false);

これが誰かを助けることができれば幸いです

Question

私はPreferenceActivityを使用して、ユーザーがいくつかの値を設定できるようにしています。 私は定義された設定でxmlファイルを供給しています。

私はすべてのandroid:defaultValue=""を設定しました。

アプリケーションを起動するときに設定が必要です。まだ手動で設定されていない場合は、デフォルト値が必要です。

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean value = prefs.getBoolean("key"), false); 

しかし、 android:defaultValue="true"私はまだfalseなりfalse 。 つまり、XMLのdefaultValuesセットは、preferences-screenを初期化するときはどこでも使用されていないようです。

私はgetBoolean()メソッドのデフォルト値をハードコードしたくありません。 では、これらを1つの場所で定義するだけでデフォルト値を取得する方法はありますか?




たとえば、 DialogPreferenceを拡張DialogPreferenceと、私はこれを行います:

@Override
protected void onSetInitialValue(boolean restore, Object defaultValue) {
    super.onSetInitialValue(restore, defaultValue);

    if (restore) {
        mValue = shouldPersist() ? getPersistedString(mDefault) : mDefault;
    } else {
        mValue = mDefault;
    }
}

mDefaultは次のいずれかです。

  • mContext.getResources()。getString(attrs.getAttributeResourceValue(androidns、 "defaultValue"、100));
  • Rで索引付けされたもの