【问题标题】:Android Shared preferences with multiple activitiesAndroid 与多个活动共享首选项
【发布时间】:2012-09-08 02:16:31
【问题描述】:
  1. 如何检索已从 以前的活动?
  2. 我是否需要启用文件写入或其他一些清单修改?

【问题讨论】:

    标签: java android android-activity sharedpreferences


    【解决方案1】:

    您不需要任何特殊的清单修改来实现这一点。

    假设您已经保存了首选项,您可以随时读取这些首选项,执行如下所示的操作。

    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!
      
    2. 从共享首选项文件中读取:

        SharedPreferences prefs = getSharedPreferences("your_file_name",
        MODE_PRIVATE); String string = prefs.getString("yourStringName",
        "default_value_here_if_string_is_missing");
      

    您可以使用默认文件来保存/读取您的首选项。只需将上面两个代码 sn-ps 的第一行替换为:SharedPreferences prefs = getDefaultSharedPreferences(getApplicationContext());

    就是这样!请查看 Android 开发者专用页面here

    希望它有用。让我知道。

    【讨论】:

      【解决方案2】:

      除了确保两个活动都在同一个文件中写入/读取之外,您不需要做任何特别的事情。在后台,首选项只是存储为 XML 文件。

      所以,你的选择是:

      1) 使用两个活动中的PreferenceManager.getDefaultSharedPreferences() 写入默认文件。

      2) 使用Context.getSharedPreferences() 指定自定义文件名,并在两个活动中使用相同的名称。

      【讨论】:

      • 感谢您为我澄清了这一点,也在发送意图和偏好之间,更好地用于传递存储短字符串的变量?
      • 这取决于您要传递多少变量,以及您是否希望它们是永久的。如果您有超过 20 个永久变量要传递,我会考虑使用 sqlite 数据库。如果您只是在 Activity 之间传递少量变量,那么如果您不介意退出应用程序后变量会被清除,那么使用 Intent 是更好的选择。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-09-20
        • 2011-11-17
        • 2011-09-05
        • 2021-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多