fqf*_*555 12 android android-preferences android-sharedpreferences
我目前正在开发"开发Android应用程序"Udacity课程.在"第3课:新活动和意图>使用SharedPreferences"部分中,教师要求我在Android开发者网站上挖掘如何获取用户首选项SharedPreferences.但是,我发现官方文档和课程解决方案之间存在差异.
Udacity课程的解决方案说,为了抓住一个SharedPreferences实例PreferenceActivity,你应该打电话:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
Run Code Online (Sandbox Code Playgroud)
(这里getActivity()只是在Context这里,因为它在里面被称为Fragment.)
虽然Android开发者网站上的官方文档表明您应该致电:
SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE)
Run Code Online (Sandbox Code Playgroud)
那么PreferenceManager.getDefaultSharedPreferences(Context context)和之间的区别是Activity.getPreferences(int mode)什么?
请注意:此问题不涉及getSharedPreferences()需要文件名的任何内容.这是关于之间的差异getPreferences()和getDefaultSharedPreferences().
提前致谢.
Shy*_*yri 18
根据您提供给Android文档的链接
getSharedPreferences() - 如果需要使用第一个参数指定的名称标识的多个首选项文件,请使用此选项.
getPreferences() - 如果您的Activity只需要一个首选项文件,请使用此选项.因为这将是您的Activity的唯一首选项文件,所以您不提供名称.
因此,当您要保存/检索的数据可以在应用程序中的不同活动中使用时,请使用getSharedPreferences.如果这些首选项仅用于一个Activity,则可以使用getPreferences.
编辑:还要注意,正如帖子中所说,你链接'getDefaultSharedPreferences将使用默认名称,如"com.example.something_preferences",但getSharedPreferences将需要一个名称'
me_*_*me_ 13
其中一个主要区别是:getPreferences()返回一个仅与其打开的活动相关的文件.而getDefaultSharedPreferences()返回应用程序的全局首选项.昨天学到了很难的方法.
如果您在PreferenceManager中查看一下:
public static SharedPreferences getDefaultSharedPreferences(Context context) {
return context.getSharedPreferences(getDefaultSharedPreferencesName(context),
getDefaultSharedPreferencesMode());
}
/**
* Returns the name used for storing default shared preferences.
*
* @see #getDefaultSharedPreferences(Context)
* @see Context#getSharedPreferencesPath(String)
*/
public static String getDefaultSharedPreferencesName(Context context) {
return context.getPackageName() + "_preferences";
}
private static int getDefaultSharedPreferencesMode() {
return Context.MODE_PRIVATE;
}
Run Code Online (Sandbox Code Playgroud)
因此,getDefaultSharedPreferences()将getSharedPreferences()方法与您的应用包名称和模式私有一起使用,如果您从活动中使用getPreferences(),它将使用相同的getSharedPreferences()方法,但具有getLocalClassName();
来自下面链接的第一篇文章:“注意:SharedPreferences API 仅用于读取和写入键值对,您不应将它们与 Preference API 混淆,Preference API 可以帮助您为应用程序设置构建用户界面(尽管它们使用 SharedPreferences)作为他们保存应用程序设置的实现)。 ”
http://developer.android.com/training/basics/data-storage/shared-preferences.html
http://developer.android.com/guide/topics/ui/settings.html
| 归档时间: |
|
| 查看次数: |
12407 次 |
| 最近记录: |