Android Preferences Example
Android shared preference is used to store and retrieve primitive information. In android, string, integer, long, number etc. are considered as primitive data type.
Android Shared preferences are used to store data in key and value pair so that we can retrieve the value on the basis of key.
It is widely used to get information from user such as in settings.
Android Preferences Example
Let's see a simple example of android shared preference.
activity_main.xml
Drag one textview and two buttons from the pallete.
File: activity_main.xml
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context="example.javatpoint.com.preferences.MainActivity">
- <TextView
- android:id="@+id/txtPrefs"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- android:text="Data:" />
- <Button
- android:id="@+id/storeinformation"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_below="@+id/showinformation"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="18dp"
- android:text="Store Information" />
- <Button
- android:id="@+id/showinformation"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="17dp"
- android:text="Show Information" />
- </RelativeLayout>
array.xml
It is created inside res/values directory.
File: array.xml
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string-array name="listOptions">
- <item>English</item>
- <item>Hindi</item>
- <item>Other</item>
- </string-array>
- <string-array name="listValues">
- <item>English Language</item>
- <item>Hindi Language</item>
- <item>Other Language</item>
- </string-array>
- </resources>
prefs.xml
It is created inside res/xml directory.
File: prefs.xml
- <?xml version="1.0" encoding="utf-8"?>
- <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
- <PreferenceCategory
- android:summary="Username and password information"
- android:title="Login information" >
- <EditTextPreference
- android:key="username"
- android:summary="Please enter your login username"
- android:title="Username" />
- <EditTextPreference
- android:key="password"
- android:summary="Enter your password"
- android:title="Password" />
- </PreferenceCategory>
- <PreferenceCategory
- android:summary="Username and password information"
- android:title="Settings" >
- <CheckBoxPreference
- android:key="checkBox"
- android:summary="On/Off"
- android:title="Keep me logged in" />
- <ListPreference
- android:entries="@array/listOptions"
- android:entryValues="@array/listValues"
- android:key="listpref"
- android:summary="List preference example"
- android:title="List preference" />
- </PreferenceCategory>
- </PreferenceScreen>
Main Activity Class
File: MainActivity.java
- package example.javatpoint.com.preferences;
- import android.content.Intent;
- import android.content.SharedPreferences;
- import android.preference.PreferenceManager;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
- public class MainActivity extends AppCompatActivity {
- TextView textView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- Button storeinformation = (Button) findViewById(R.id.storeinformation);
- Button showinformation = (Button) findViewById(R.id.showinformation);
- textView = (TextView) findViewById(R.id.txtPrefs);
- View.OnClickListener listener = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.storeinformation:
- Intent intent = new Intent(MainActivity.this,PrefsActivity.class);
- startActivity(intent);
- break;
- case R.id.showinformation:
- displaySharedPreferences();
- break;
- default:
- break;
- }
- }
- };
- storeinformation.setOnClickListener(listener);
- showinformation.setOnClickListener(listener);
- }
- private void displaySharedPreferences() {
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
- String username = prefs.getString("username", "Default NickName");
- String passw = prefs.getString("password", "Default Password");
- boolean checkBox = prefs.getBoolean("checkBox", false);
- String listPrefs = prefs.getString("listpref", "Default list prefs");
- StringBuilder builder = new StringBuilder();
- builder.append("Username: " + username + "\n");
- builder.append("Password: " + passw + "\n");
- builder.append("Keep me logged in: " + String.valueOf(checkBox) + "\n");
- builder.append("List preference: " + listPrefs);
- textView.setText(builder.toString());
- }
- }
PrefsActivity class
File: PrefsActivity.java
- package example.javatpoint.com.preferences;
- import android.os.Bundle;
- import android.preference.PreferenceActivity;
- public class PrefsActivity extends PreferenceActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- addPreferencesFromResource(R.xml.prefs);
- }
- }
AndroidManifest.xml
File: AndroidManifest.xml
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="example.javatpoint.com.preferences">
- <application
- android:allowBackup="true"
- android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
- android:roundIcon="@mipmap/ic_launcher_round"
- android:supportsRtl="true"
- android:theme="@style/AppTheme">
- <activity android:name=".MainActivity">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <activity android:name=".PrefsActivity"
- android:theme="@android:style/Theme.Black.NoTitleBar" >
- </activity>
- </application>
- </manifest>
No comments:
Post a Comment