Reputation: 2045
I am trying to share a shared preference in between two activities of my project, but for some reason I am not able to pass the data.
I have Activity A which reads the shared preference and Activity B that reads as well as edit that shared preference.
Here is the code I am using to write the shared preference in Activity B:
SharedPreferences sharedPref = getSharedPreferences("myPrefs", Context.
MODE_WORLD_WRITEABLE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("theme", "black");
editor.commit();
and for reading in Activity A:
SharedPreferences sharedPref = getSharedPreferences("myPrefs", Context.
MODE_WORLD_WRITEABLE);
String theme=sharedPref.getString("theme","blue");
I have tried using the different modes, and it worked in Activity B in PRIVATE mode but it wasn't shared to activity A. For some reasons I think I have two different shared preferences(same name) for the two different activities. How do I use the same shared preference for both the activities ?
Upvotes: 3
Views: 16852
Reputation: 24848
// 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;
}
Upvotes: 0
Reputation: 4954
To read shared datas in the second activity , change the mode :
from MODE_WORLD_WRITEABLE
to MODE_WORLD_READABLE
SharedPreferences sharedPref = getSharedPreferences("myPrefs",Context.MODE_WORLD_READABLE);
String theme=sharedPref.getString("theme","blue");
Upvotes: 0
Reputation: 48272
You can do simpler - in any activity:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
You will have the same prefs this way from anywhere.
Upvotes: 13