How to use Shared Preferences to save more than one values | in this tutorial, we will learn how to store and retrieve multiple values using Shared Preferences in android.
I have already discussed Storing and Retrieving data Using Shared Preferences tutorial for storing and retrieving single value using Shared Preference in android.
How to use Shared Preferences to save more than one values
In this tutorial we would going to store multiple values to Shared Preferences .
As you know the primary purpose of using Shared Preferences in android is to store user specific details. Suppose when a user logged into the android application, we can display the username of a person in each page or in each activity using Shared Preferences.
Sessions are useful when you want to store user specific data globally throughout the application when a user login to an application. This can be done by storing the data in android shared preferences.
Shared Preferences is used to stores private data in key-value pairs.
In Shared Preferences save data to shared preference by calling the getSharedPreferences() method.
The SharedPreferences Editor is used to apply the changes which we have made while storing the data. The data is saved using commit() method.
You can create a new shared preference file or you can accessing existing shared preference file by calling one of the following methods:
-
- getSharedPreferences() — Use this if you need multiple shared preference files identified by name, which you specify with the first parameter.
SharedPreferences sp; sp=getSharedPreferences("SD", Context.MODE_PRIVATE);
-
- getPreferences() — Use this if you need to use only one shared preference file for the activity. The file that belongs to the activity, you don’t need to supply a name as above.
SharedPreferences sharedPref = getActivity().getPreferences(Context.MODE_PRIVATE);
I have created Save, Select, Delete , Update and Clear options for handling the values using shared preference in How to use Shared Preferences to save more than one values tutorial.
Working of Each Button
SAVE : This is used to save the values.
SELECT : It will retrieve name and age based on user ID. Before proceed please provide user ID.
UPDATE : Once you retrieve using select button ,you can update values.
DELETE : First you have to retrieve the user details using SELECT button. Then you can delete the values using DELETE button.
CLEAR : You can clear all values in the text field using CLEAR Button.
The layout for creating user interface is shown below.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical"> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="15dp" android:hint="Enter Your Id" android:padding="11dp" android:ems="10" android:inputType="number" > <requestFocus /> </EditText> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/editText1" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:hint="Enter Your Name" android:padding="11dp" android:ems="10" android:inputType="textPersonName" /> <EditText android:id="@+id/editText3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/editText1" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:hint="Enter Your Age" android:padding="11dp" android:ems="10" android:inputType="textPersonName" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/editText2" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:padding="11dp" android:text="SAVE" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@+id/button1" android:layout_marginTop="20dp" android:padding="11dp" android:text="SELECT" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@+id/button2" android:layout_marginTop="20dp" android:padding="11dp" android:text="UPDATE" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@+id/button3" android:layout_marginTop="20dp" android:padding="11dp" android:text="DELETE" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_below="@+id/button3" android:layout_marginTop="20dp" android:padding="11dp" android:text="CLEAR" /> </LinearLayout> </LinearLayout>
The graphical representation of above layout looks like
The java code for handling values using shared preference is updated in the main activity file.
MainActivity.java
package com.example.sharedpreferencetostoremultiplevalues; import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends AppCompatActivity { SharedPreferences Sprefs; EditText id; EditText name; EditText age; String Value; private String prefName = "report"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); id=(EditText) findViewById(R.id.editText1); name=(EditText) findViewById(R.id.editText2); age=(EditText) findViewById(R.id.editText3); Button save=(Button) findViewById(R.id.button1); Button select=(Button) findViewById(R.id.button2); Button update=(Button) findViewById(R.id.button3); Button delete=(Button) findViewById(R.id.button4); Button clear=(Button) findViewById(R.id.button5); save.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Sprefs = getSharedPreferences(prefName, Context.MODE_PRIVATE); SharedPreferences.Editor editor = Sprefs.edit(); if (id.getText().toString().equals("")||name.getText().toString().equals("")||age.getText().toString().equals("")){ Toast.makeText(getApplicationContext(), "Please Fill All the Fields",Toast.LENGTH_SHORT).show(); } else if (!Sprefs.getString("id"+id.getText().toString(),"").toString().equals("")){ Toast.makeText(getBaseContext(), "User is already Registered",Toast.LENGTH_SHORT).show(); } else { //---save the values in the EditText view to preferences--- editor.putString("id"+id.getText().toString(),id.getText().toString()); editor.putString("name"+id.getText().toString(),name.getText().toString()); editor.putString("age"+id.getText().toString(),age.getText().toString()); editor.commit();//---saves the values--- Toast.makeText(getBaseContext(), "User Details Registered",Toast.LENGTH_SHORT).show(); id.setText(""); name.setText(""); age.setText(""); } } }); select.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Sprefs = getSharedPreferences(prefName, Context.MODE_PRIVATE); //Value=Sprefs.getString("id"+id.getText().toString(),""); if(id.getText().toString().equals("")) { Toast.makeText(getBaseContext(), "Please Enter User ID",Toast.LENGTH_SHORT).show(); id.setText(""); name.setText(""); age.setText(""); } else if(Sprefs.getString("id"+id.getText().toString(),"").toString().equals("")){ Toast.makeText(getBaseContext(), "No such User ID Exits. Provide Valid User ID",Toast.LENGTH_SHORT).show(); } else{ //name.setText(Sprefs.getString("name"+name.getText().toString(),"").toString()); //age.setText(Sprefs.getString("age"+age.getText().toString(),"").toString()); name.setText(Sprefs.getString("name"+id.getText().toString(),"").toString()); age.setText(Sprefs.getString("age"+id.getText().toString(),"").toString()); } } }); update.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Sprefs = getSharedPreferences(prefName,Context.MODE_PRIVATE); SharedPreferences.Editor editor = Sprefs.edit(); //---save the values in the EditText view to preferences--- if (id.getText().toString().equals("")||name.getText().toString().equals("")||age.getText().toString().equals("")){ Toast.makeText(getApplicationContext(), "Please Fill All the Fields",Toast.LENGTH_SHORT).show(); } else if (Sprefs.getString("id"+id.getText().toString(),"").toString().equals("")){ Toast.makeText(getApplicationContext(), "Cannot Update: No Such User Exists",Toast.LENGTH_SHORT).show(); } else { //---save the values in the EditText view to preferences--- editor.putString("id"+id.getText().toString(),id.getText().toString()); editor.putString("name"+id.getText().toString(),name.getText().toString()); editor.putString("age"+id.getText().toString(),age.getText().toString()); editor.commit();//---saves the values--- Toast.makeText(getBaseContext(), "Updated Your Data Successfully",Toast.LENGTH_SHORT).show(); id.setText(""); name.setText(""); age.setText(""); } } }); delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (id.getText().toString().equals("")||name.getText().toString().equals("")||age.getText().toString().equals("")){ Toast.makeText(getApplicationContext(), "Please Fill All the Fields",Toast.LENGTH_SHORT).show(); } else if (Sprefs.getString("id"+id.getText().toString(),"").toString().equals("")){ Toast.makeText(getApplicationContext(), "Cannot Delete : No Such User ID Exists",Toast.LENGTH_SHORT).show(); } else { SharedPreferences.Editor ed=Sprefs.edit(); ed.clear();// remove all data ed.commit();// save changes Toast.makeText(getBaseContext(), "Deleted Your Data Record Successfully",Toast.LENGTH_SHORT).show(); id.setText(""); name.setText(""); age.setText(""); } } }); clear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { id.setText(""); name.setText(""); age.setText(""); } }); } }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.sharedpreferencetostoremultiplevalues"> <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="15" /> <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> </application> </manifest>
Output of how to use Shared Preferences to save more than one values is shown below.