Ever wondered how to store data in any Android application. Well here’s the answer to that. Through this Blog I would like to bring you all how to store data in an Android application using Preferences.
Android provides many ways of storing data in an application. One of the way to store data is through Preferences. Preferences allow us to save and retrieve data.
For using Preferences, you need to call a method getSharedPreferences().
Preferences store private primitive persistent data in a key, value pair.
Now, how do we get access to the Preference?
- getPreference() from within Activity – to access activity specific preference.
- getSharedPreferences() from within Activity or other application Context –
to access application-level preference. - getDefaultSharedPreferences() on PreferenceManager – to get the shared preferences that work in concert with Android’s overall preference framework.
Examples include:
1. Security Access Token
2. Endpoint URLs.
3. Other user
To Save the Preferences:
1 |
getPreferences(MODE_PRIVATE).edit().putString(“Name of Variable”, value).commit(); |
To Retrieve the Preferences:
1 |
“variable” = getPreferences(MODE_PRIVATE).getString(“Name of Variable”, value). |
Types of Preferences:
Type | Use | Syntax |
CheckBox | You are simply interested in a true/false value | <CheckBoxPreference android:key=”applicationUpdates” …….. /> |
EditText | If user want to enter value i.e. name, number, etc. | <EditTextPreference android:title=”Your Name”
android:key=”username” android:summary=”Please provide your username“ > </EditTextPreference> |
List | Where the user is shown a list of options and select one of them as their preferences | <ListPreference android:key=”downloadType”……/>
|
Example:
Create a new folder in the res folder and name is as xml. In this newly created folder, add a file and name it myappreferences.xml
Definition: Implement setting page using Preferences.
The myapppreferences.xml file
The root node for the preference file must be <PreferenceScreen>.
You can also group items together. There are two ways of doing this:
– You can group items together with a title.
– Use <PreferenceCategory> to do this
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceCategory android:title="Settings" > <EditTextPreference android:title="Password" android:summary="Set Your Password" android:key="prefUserPassword"/> </PreferenceCategory> <PreferenceCategory android:title="Security Settings" > <CheckBoxPreference android:defaultValue="false" android:key="prefLockScreen" android:summary="Lock The Screen With Password" android:title="Screen Lock" > </CheckBoxPreference> <ListPreference android:key="prefUpdateFrequency" android:title="Reminder for Updation" android:summary="Set Update Reminder Frequency" android:entries="@array/updateFrequency" android:entryValues="@array/updateFrequencyValues" /> </PreferenceCategory> </PreferenceScreen> |
activity_main.xml
Take one Button and one TextView:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00bcd4" tools:context=".MainActivity" > <Button android:id="@+id/buttonSettings" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="150dp" android:textSize="25dp" android:text="Settings" /> <TextView android:id="@+id/textViewSettings" android:textSize="21dp" android:textColor="#1a237e" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@+id/buttonSettings" android:layout_marginTop="66dp" android:text="No Settings" android:textAppearance="?android:attr/textAppearanceMedium" /> </RelativeLayout> |
Add new Activity in AndroidManifest.xml
1 2 3 |
<activity android:name="com.example.preferencesexercise.UserSettingActivity" android:label="@string/app_name" ></activity> |
The Basic Settings – MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
public class MainActivity extends Activity { //Initialize for store the Result as SETTINGS_RESULT private static final int SETTINGS_RESULT = 1; Button settingButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Initialize Button Button btnSettings=(Button)findViewById(R.id.buttonSettings); // start the UserSettingActivity when user clicks on Button btnSettings.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub Intent i = new Intent(getApplicationContext(), UserSettingActivity.class); startActivityForResult(i, SETTINGS_RESULT); } }); } private void displayUserSettings() { SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); String settings = ""; settings=settings+"Password: " + sharedPrefs.getString("prefUserPassword", "NOPASSWORD"); settings=settings+"\nRemind For Update:"+ sharedPrefs.getBoolean("prefLockScreen", false); settings=settings+"\nUpdate Frequency: " + sharedPrefs.getString("prefUpdateFrequency", "NOUPDATE"); TextView textViewSetting = (TextView) findViewById(R.id.textViewSettings); textViewSetting.setText(settings); } } |
UserSettingActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class UserSettingActivity extends PreferenceActivity { @SuppressWarnings("deprecation") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.myapppreferences); } } |
Conclusion:
When developing a mobile application, a common need is to store data or user’s preferences. In order to make use of the preferences framework, the first step is to extend the PreferenceActivity class.
Preferences are more useful when you want to store your data in local database. It’s very easy to use. Hope through this Blog I was able to make things clear on how to use Preferences to store data in any Android application.
Leave a Reply