java - 共享首选项不需要创建吗?

标签 java android sharedpreferences

我正在尝试保存我制作的 Android 应用程序上的信息。我想保留一个名字,“罗伯特”。为此,我一直在研究共享首选项,但找不到解释如何创建共享首选项的教程。

所有教程都是这样开始的:

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);

但是他们没有解释 getPreferences() 从哪里获取对象。

此对象(SharedPreferences 对象)何时创建?它是与上下文一起创建的吗?它是与每个 Activity 一起创建的吗?

我对 Android 还很陌生,但是是一个中级(不具备)Java 程序员。

最佳答案

SharedPreferences 的创建方式如下:

SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
 editor.putString("name", "Robert");
 editor.commit(); //Or use editor.apply()

然后你会像这样再次得到它们:

SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
  String name = prefs.getString("name", "No name defined");//"No name defined" is the default value.

因此,getString() 会获取您之前存储的值,如果您尚未存储“name”字符串,则返回默认值。

您存储的对象保存在系统中,并且始终可供抓取。

更新: getSharedPreferences() 方法返回 SharedPreferences.Editor 接口(interface)。 根据android docs

Interface used for modifying values in a SharedPreferences object. All changes you make in an editor are batched, and not copied back to the original SharedPreferences until you call commit() or apply()

更新2: This answer包含有关 SharedPreferences 存储的更多信息。

关于java - 共享首选项不需要创建吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40666207/

相关文章:

java - JAVA 中的 DOM 解析器查询

java - Cursor,CursorAdapter,LoaderManager,Loader之间的关系

java - onSharedPreferenceChanged 方法进入无限循环?

sharedpreferences - BlackBerry 10 中的共享首选项或持久存储

java - 静态方法中的 SharedPreferences - 尽管传递了默认值,但 Lint 警告 "might be null"?

java - 运算符/赋值/关于类的事情 (Java)

java - 我收到此 "NullPointerException"错误

android - 无论如何要将文本大小存储在可绘制对象中,这种方式取决于屏幕大小,main.xml 将选择正确的文本大小?

android - 生成签名 APK - 错误 :(57) Error parsing XML: duplicate attribute in cardview?

android - 外部库 jar 不完整