「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 件のコメント:
コメントを投稿