Tanuj Wadhwa
Tanuj Wadhwa

Reputation: 2045

Using shared preferences in between activities

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

Answers (3)

Hareshkumar Chhelana
Hareshkumar Chhelana

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

Zied R.
Zied R.

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

Alexander
Alexander

Reputation: 48272

You can do simpler - in any activity:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

You will have the same prefs this way from anywhere.

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

Upvotes: 13

Related Questions