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

时间:2014-03-03 03:55:06

标签: android sharedpreferences

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

我有活动A,它读取共享首选项和活动B,读取和编辑共享首选项。

以下是我用于在活动B中编写共享首选项的代码:

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

并在活动A中阅读:

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

我尝试过使用不同的模式,它在活动B中以私有模式工作,但它没有与活动A共享。出于某些原因,我认为我有两个不同的共享首选项(同名)用于两个不同的活动。如何对这两个活动使用相同的共享首选项?

3 个答案:

答案 0 :(得分:12)

你可以在任何活动中做得更简单:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

从任何地方都可以使用相同的首字母。

http://developer.android.com/reference/android/preference/PreferenceManager.html#getDefaultSharedPreferences(android.content.Context)

答案 1 :(得分:0)

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

MODE_WORLD_WRITEABLE MODE_WORLD_READABLE

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

答案 2 :(得分: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;
}