我正在使用PreferenceActivity为我的应用程序显示一些设置.我通过xml文件膨胀设置,以便我的onCreate(和完整的类方法)如下所示:
public class FooActivity extends PreferenceActivity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
addPreferencesFromResource(R.xml.preference);
}
}
Run Code Online (Sandbox Code Playgroud)
PreferenceActivity PreferenceFragment的javadoc 说明了这一点
当用户与它们交互时,这些首选项将自动保存到SharedPreferences.要检索此活动中的首选项层次结构将使用的SharedPreferences实例,请使用与此活动相同的包中的上下文调用getDefaultSharedPreferences(android.content.Context).
但是我如何在另一个Activity中获得SharedPreference的名称?我只能打电话
getSharedPreferences(name, mode)
Run Code Online (Sandbox Code Playgroud)
在其他活动中但我需要PreferenceActivity使用的SharedPreference的名称.名称是什么或如何检索它?
Android getDefaultSharedPreferences和getSharedPreferencesAndroid有什么区别?有人可以解释一下吗?
我只是好奇.有3种方法:
1. getPreferenceManager().setSharedPreferencesName(String PrefName);
2. PreferenceManager.getDefaultSharedPreferences(Context context)
3. Context.getSharedPreferences (String name, int mode)
Run Code Online (Sandbox Code Playgroud)
据我所知,第三种方法仅在使用第一种方法时使用,对吧?但是我们也用3种方法addPreferencesFromResource(int resID); 那么区别是什么呢?我们什么时候可以使用这些方法之一?谢谢!
这是一个标准任务:在应用程序的共享首选项中存储一些值,以便以后能够检索它.但是人们会发现有3个函数可以在那里存储一个值:
//1.
public static SharedPreferences PreferenceManager.getDefaultSharedPreferences(Context context) {}
//2.
public SharedPreferences Activity.getPreferences(int mode) {}
//3.
public SharedPreferences ContextWrapper.getSharedPreferences(String name, int mode) {}
Run Code Online (Sandbox Code Playgroud)
所以现在问题是:选择哪一个,哪一个更好,或者每个人的目的是什么?