fred basset
fred basset

Reputation: 10072

Android preferences do not seem to be persisted between application starts

I'm using preferences to save some user settings in my Nexus 7 app. My code for saving a value to preferences is:

    SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    String systemId = spinnerActivity.getSelectedItem().toString();
    editor.putString(PreferenceKeys.SAVED_SYSTEMID, systemId);
    if (!editor.commit()) {
        Toast.makeText(getApplicationContext(), "Error saving System ID", Toast.LENGTH_LONG).show();
    }

I've stepped through this with the debugger and it is being called correctly. When I restart my app. and try to read back the value with the code below, I always get null.

     SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);
     String savedSystemId = sharedPref.getString(PreferenceKeys.SAVED_SYSTEMID, null);
     ConnectionInfo.setSystemId(savedSystemId);

The loading is called from the onCreate() function in the main activity. Strangely enough loading of other preference values elsewhere in the app. works fine, it's just this one case that doesn't work. Can anyone see what's wrong?

Upvotes: 0

Views: 54

Answers (3)

Gene
Gene

Reputation: 11267

SharedPreferences sharedPref = getSharedPreferences("Name_of_item",Context.MODE_PRIVATE);

Upvotes: 1

User10001
User10001

Reputation: 1305

please try the below

SharedPreferences sharedPref = getPreferences("preference_name",Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
String systemId = spinnerActivity.getSelectedItem().toString();
editor.putString(PreferenceKeys.SAVED_SYSTEMID, systemId);
if (!editor.commit()) {
    Toast.makeText(getApplicationContext(), "Error saving System ID", Toast.LENGTH_LONG).show();
}



SharedPreferences sharedPref = getPreferences("preference_name",Context.MODE_PRIVATE);
 String savedSystemId = sharedPref.getString(PreferenceKeys.SAVED_SYSTEMID, null);
 ConnectionInfo.setSystemId(savedSystemId);

Upvotes: 1

Pete
Pete

Reputation: 3872

Instead of using:

SharedPreferences sharedPref = getPreferences(Context.MODE_PRIVATE);

Try to use this:

import android.preference.PreferenceManager;
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);

Or, you can use a named preferences page in which case:

public static final String PREF_FILE_NAME = "PrefFile";
SharedPreferences sharedPref = getSharedPreferences(PREF_FILE_NAME, MODE_PRIVATE);

Upvotes: 0

Related Questions