4th Street Bar Hive-Bar

Hive-Bar Powered by Hive beta-fdb5b5b

Community post

Android: SharedPreferences to save Data

A view will automatically save its instance state if it has a unique id, but if you press back the data will still be destroyed. SharedPreferences are used to store key-value pairs for our apps. Typical uses are to save the user's name, keep track of what theme the user prefers, store a counter of how many times the user signed on, or keep track of the high score.

First, start off by declaring a constant for the file name. Then declare a constant for the key we'll require:

private static final String PREFS_FILE = "com.company.preferences"; //.preferences at the end is standard naming convention

private static final String KEY_CHECKBOX = "key_checkbox";

Second, declare SharedPreferences and an Editor field.

private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor;

Third, initialize mSharedPreferences and mEditor in onCreate method.

mSharedPreferences = getSharedPreferences(PREFS_FILE, Context.MODE_PRIVATE);
mEditor = mSharedPreferences.edit();

Forth, Override onPause method. Save the value in a Boolean and apply

mEditor.putBoolean(KEY_CHECKBOX, mCheckBox.isChecked());
mEditor.apply();

Lastly, Retrieve the saved value in onCreate and set the state of the CheckBox

Boolean isCheckBoxChecked = mSharedPreferences.getBoolean(KEY_CHECKBOX, false);
mCheckBox.setChecked(isCheckBoxChecked);

Example 1: uses a checkbox

import android.view.View;
import android.os.Bundle;

public class MainActivity extends Activity {

private static final String PREFS_FILE= "com.company.preferences";
private static final String KEY_CHECKBOX= "key_checkbox";

private SharedPreferences mSharedPreferences;
private SharedPreferences.Editor mEditor;
public CheckBox mCheckBox;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mCheckBox = (CheckBox) findViewById(R.id.checkBox);
mSharedPreferences = getSharedPreferences(PREFS_FILE, Context.MODE_PRIVATE);
mEditor = mSharedPreferences.edit();

Boolean isCheckBoxChecked = mSharedPreferences.getBoolean(KEY_CHECKBOX, false);
mCheckBox.setChecked(isCheckBoxChecked);

}
@Override
protected void onPause(){
super.onPause();

mEditor.putBoolean(KEY_CHECKBOX, mCheckBox.isChecked());
mEditor.apply();

}
}

Example 2: uses an editText

public class MainActivity extends AppCompatActivity{
private static final String PREFS_FILE = "com.company.preferences";
private static final String KEY_EDIITTEXT = "key_edittext";
private SharedPreferences.Editor mEditor;
private SharedPreferences mSharedPreferences;
private EditText mEditText;

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mEditText = (EditText) findViewById(R.id.editText);
    mSharedPreferences = getSharedPreferences(PREFS_FILE, Context.MODE_PRIVATE);
    mEditor = mSharedPrefernces.edit();

    String editTextString = mSharedPreferences.getString(KEY_EDITTEXT, ""); //pass in key and empty string for default when string isn't found
    mEditText.setText(editTextString);   //update our editText
}

@Override
protected void onPause(){
    super.onPause();
    
    mEditor.putString(KEY_EDITTEXT, mEditText.getText().toString());
    mEditor.apply();
}

}

To clear to default values, you can use the clear method of a sharedPreferences editor Object. Also, can use the remove() and pass in a key to remove just one value (don't forget apply() to update value).

3 upvotes $0.03

Replies (2)

Review before signing

Posting as . Signing with . Keychain permission: Posting. Hive Keychain will ask you to approve this action next.


  
Technical details

Operation fingerprint: