「PreferenceManager の getSharedPreferenceName() 呼べば OK」
PreferenceManager のコンストラクタ
↓
init()
↓
getDefaultSharedPreferencesName() で取得した名前を setSharedPreferencesName() で mSharedPreferencesName にセット
getDefaultSharedPreferences() では getDefaultSharedPreferencesName() で取得した名前の SharedPreferences を返しているので、
getSharedPreferencesName() を呼んで mSharedPreferencesName を取得すればいいということになる。
ただし、setSharedPreferencesName() を呼んで名前を変えてしまうと、getDefaultSharedPreferencesName() と違う文字列が帰ってくることになるので注意が必要。
http://tools.oesf.biz/android-4.0.1_r1.0/xref/frameworks/base/core/java/android/preference/PreferenceManager.java
- 105 private String mSharedPreferencesName;
- 141 PreferenceManager(Activity activity, int firstRequestCode) {
- 142 mActivity = activity;
- 143 mNextRequestCode = firstRequestCode;
- 144
- 145 init(activity);
- 146 }
- 160 private void init(Context context) {
- 161 mContext = context;
- 162
- 163 setSharedPreferencesName(getDefaultSharedPreferencesName(context));
- 164 }
- 302 public String getSharedPreferencesName() {
- 303 return mSharedPreferencesName;
- 304 }
- 313 public void setSharedPreferencesName(String sharedPreferencesName) {
- 314 mSharedPreferencesName = sharedPreferencesName;
- 315 mSharedPreferences = null;
- 316 }
- 365 public static SharedPreferences getDefaultSharedPreferences(Context context) {
- 366 return context.getSharedPreferences(getDefaultSharedPreferencesName(context),
- 367 getDefaultSharedPreferencesMode());
- 368 }
- 370 private static String getDefaultSharedPreferencesName(Context context) {
- 371 return context.getPackageName() + "_preferences";
- 372 }
ちなみに PreferenceManager のインスタンスを取得するには、2.x なら PreferenceActivity, 3.0 以降なら PreferenceFragment の getPreferenceManager() から取得できます。
PreferenceManager のコンストラクタが package private だから support package で PreferenceFragment が提供されないのかなと思いました。
0 件のコメント:
コメントを投稿