Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android - How Do I Set A Preference In Code

People also ask

How do I set custom preferences on Android?

In your XML you have to declare the root element as android:id="@android:id/widget_frame , and then declare TextView as android:title and android:summary . You can then declare other elements you want to appear in the layout.

How do I get to preferences in Android Studio?

Click File > Settings (on macOS, Android Studio > Preferences) to open the Settings dialog.

Where is setting preference?

Navigate to the app > res > xml > preferences.

What is Android preference?

Preferences in Android are used to keep track of application and user preferences. In any application, there are default preferences that can accessed through the PreferenceManager instance and its related method getDefaultSharedPreferences(Context)


I assume by preferences you are referring to your application's preferences and not Android phone settings.

To store preferences between runs of you application you need to do the following

  1. Create a SharedPreferences object

    SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);
    

    String n identifies your preferences and the second argument is the mode they'll be accessed

  2. Instantiate an Editor object

    SharedPreferences.Editor editor = settings.edit();
    

    Note: do not try settings.editor.edit(), this will not make a persistent object and the code below will not work

  3. Write your preferences to the buffer

    editor.put...(String, value)
    

    There are numerous put function, putString, putBoolean, etc. The String is the key ("version", "good run") and the value is the value ("1.5.2", true)

  4. Flush the buffer

    editor.commit();
    

    This actually writes you put to the preferences. If your app crashes before this line then the preferences will not be written. There is also a documented bug: commit() is supposed to return a boolean indicating success or failure. Last I checked it always returned false.

These preferences will by stored on the phone and will only be accessible to your application.

More documentation is here


I tried this but didn't work:

SharedPreferences settings = getSharedPreferences(String n, MODE_PRIVATE);

Try this instead:

SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);

You can save something in the sharedpreferences by using below code

public static void save(String valueKey, String value) {
    SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(context);
    SharedPreferences.Editor edit = prefs.edit();
    edit.putString(valueKey, value);
    edit.commit();
    }

To read preferences:

public static String read(String valueKey, String valueDefault) {
    SharedPreferences prefs = PreferenceManager
            .getDefaultSharedPreferences(context);
   return prefs.getString(valueKey, valueDefault);
}