我正在尝试在项目的两个活动之间共享共享首选项,但由于某种原因,我无法传递数据。
我有活动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共享。出于某些原因,我认为我有两个不同的共享首选项(同名)用于两个不同的活动。如何对这两个活动使用相同的共享首选项?
答案 0 :(得分:12)
你可以在任何活动中做得更简单:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
从任何地方都可以使用相同的首字母。
答案 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;
}