处理没有魔术字符串的Android偏好

我使用Androids 构建处理首选项的方式 ,通过在xml文件中写入所有设置。 它非常好但是我没有find任何好的方法,而不使用xml和Java代码中的魔术字符串。

我能想到的唯一方法是将首选项键保存为String,但这也感觉不对。 有人有办法解决这个问题吗?

您可以将“魔术字符串”移动到字符串资源:

在您的首选项xml文件中:

 

在您的values/strings.xml文件中:

 ... pdn ... 

然后,您可以从ActivityPreferenceActivity引用首PreferenceActivity

 SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); String pdnKey = getString(R.string.prefernece_pdn_key); String pdn = sharedPreferences.getString(pdnKey, null); 

如果您不想从字符串资源中获取首选项键,那么您可以执行另一项技巧:

 public class PreferenceNames { /* categories */ public static final String LoginCategory = MyApplication.getResourceString(R.string.preferences_login_category_key); ... /* preferences */ public static final String Pdn = MyApplication.getResourceString(R.string.preferences_pdn_key); ... } 

所以你现在可以通过下一个方式引用你的偏好键:

 SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); String pdn = sharedPreferences.getString(PreferenceNames.Pdn, null); 

以下是MyApplication类的外观:

 public class MyApplication extends Application { private static VvmApplication s_instance; public MyApplication(){ s_instance = this; } public static Context getContext(){ return s_instance; } public static String getResourceString(int resId){ return getContext().getString(resId); } } 

另外,您需要在AndroidManifest.xml添加下一个内容:

  ...  

我想你要找的是[这里] [1]

[1]: http : //developer.android.com/guide/topics/data/data-storage.html查看共享首选项。