多个活动中使用的Android共享首选项

17
  1. 我该如何检索之前活动中保存的共享偏好设置?
  2. 我需要启用文件写入或其他清单修改吗?
3个回答

40
你不需要进行任何特殊的清单修改来实现这个目标。
假设你已经保存了首选项,你可以随时像下面展示的那样读取这些首选项。
  1. 写入共享首选项文件:

  SharedPreferences prefs = getSharedPreferences("your_file_name", MODE_PRIVATE);
  SharedPreferences.Editor editor = prefs.edit();
  editor.putString("yourStringName", "this_is_the_saved_value");
  editor.commit(); // This line is IMPORTANT. If you miss this one its not gonna work!
  • 从共享首选项文件中读取:

      SharedPreferences prefs = getSharedPreferences("your_file_name",
      MODE_PRIVATE); String string = prefs.getString("yourStringName",
      "default_value_here_if_string_is_missing");
    
    你可以使用默认文件来保存/读取你的偏好设置。只需将上面两个代码片段的第一行替换为类似于 SharedPreferences prefs = getDefaultSharedPreferences(getApplicationContext()); 的内容即可。
    就是这样! 请查看Android开发者专门页面,链接在这里
    希望这对你有用。让我知道吧。

  • 9
    你不需要做任何特殊的事情,只需确保两个活动都写入/读取同一文件即可。在底层,首选项只是存储为 XML 文件。因此,你的选择是:1) 从两个活动中使用 PreferenceManager.getDefaultSharedPreferences() 写入默认文件。2) 使用 Context.getSharedPreferences() 指定自定义文件名,并从两个活动中使用相同的名称。

    谢谢您为我澄清这个问题,那么在发送意图和首选项之间,哪种更适合传递存储短字符串的变量? - kabuto178
    2
    这取决于你想传递多少变量,以及是否希望它们是永久的。如果您有超过20个永久变量要传递,我建议使用sqlite数据库。如果您只是在活动之间传递少量变量,并且不介意变量在退出应用程序时被清除,则使用意图是更好的选择。 - Lazy Ninja

    2

    共享首选项就是共享的。只要您在编辑后调用Editor.commit()正确保存了首选项,它们将在未来可用。


    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接