在活动之间使用共享首选项

3

我正在尝试在项目的两个活动之间共享一个共享首选项,但由于某些原因我无法传递数据。

Activity A读取共享首选项,而Activity B读取并编辑该共享首选项。

以下是我在Activity B中使用的代码来编写共享首选项:

SharedPreferences sharedPref = getSharedPreferences("myPrefs", Context.
    MODE_WORLD_WRITEABLE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("theme", "black");
editor.commit();

同时在 A Activity 中读取:

SharedPreferences sharedPref = getSharedPreferences("myPrefs", Context.
    MODE_WORLD_WRITEABLE);
String theme=sharedPref.getString("theme","blue");

我尝试使用不同的模式,在私有模式下活动B可以工作,但没有共享到活动A。出于某些原因,我认为我有两个不同的共享偏好(相同的名称)用于这两个不同的活动。我该如何在这两个活动中使用相同的共享偏好?


MODE_APPEND 对我来说非常完美,可以查看我的答案:https://dev59.com/rnzaa4cB1Zd3GeqPO1q7#21697274 - M D
3个回答

13

0

要在第二个活动中读取共享数据,请更改模式:

MODE_WORLD_WRITEABLE MODE_WORLD_READABLE

 SharedPreferences sharedPref = getSharedPreferences("myPrefs",Context.MODE_WORLD_READABLE);
  String theme=sharedPref.getString("theme","blue");

0
// try this way
1. define SharedPreferences variable in SmartApplication class  also define read and write method SharedPreferences

private SharedPreferences sharedPreferences;

 @Override
 public void onCreate() {
        super.onCreate();

 sharedPreferences = getSharedPreferences("yourAppName", MODE_PRIVATE);

 } 

public void writeSharedPreferences(String key, String value) {
        SharedPreferences.Editor editor = readSharedPreferences().edit();
        editor.putString(key, value);
        editor.commit();
}
// write Shared Preferences 
public void writeSharedPreferences(String key, boolean value) {
        SharedPreferences.Editor editor = readSharedPreferences().edit();
        editor.putBoolean(key, value);
        editor.commit();
}
// write Shared Preferences 
public void writeSharedPreferences(String key, float value) {
        SharedPreferences.Editor editor = readSharedPreferences().edit();
        editor.putFloat(key, value);
        editor.commit();
}

public void writeSharedPreferences(String key, int value) {
        SharedPreferences.Editor editor = readSharedPreferences().edit();
        editor.putInt(key, value);
        editor.commit();
}

// write Shared Preferences 
public void writeSharedPreferences(String key, long value) {
        SharedPreferences.Editor editor = readSharedPreferences().edit();
        editor.putLong(key, value);
        editor.commit();
}

// get Shared Preferences 
public SharedPreferences readSharedPreferences() {
        return sharedPreferences;
}

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