2012-09-14 53 views
12
  1. 如何检索从 以前的活动中保存的共享首选项?
  2. 我是否需要启用文件写入或其他清单修改?

回答

33

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

假设你已经保存了偏好设置,你可以在任何时候阅读这些偏好设置,就像我在下面显示的那样。

  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"); 
    

您可以使用默认文件来保存/读取您的偏好。只需用上面的代码替换上面两个代码片段的第一行:SharedPreferences prefs = getDefaultSharedPreferences(getApplicationContext());

那就是它!查看Android开发者专用页面以了解此事,here

希望它是有用的。让我知道它。

+0

这对我有一点帮助,谢谢 – kabuto178

6

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

所以,你的选择是:

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

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

+0

谢谢你为我清除这个,也发送intent和首选项之间,这是更好地用于传递存储短字符串的变量传递? – kabuto178

+2

这取决于你想传递多少变量,以及是否希望它们是永久变量。如果你有超过20个永久变量传递,我会考虑一个sqlite数据库。如果你只是在活动之间传递几个变量,如果你不介意在退出应用程序后变量被清除,那么使用意图是更好的选择。 –

1

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