ویرایش ، افزودن و حذف کردن مقدار با استفاده از shared preference در اندروید

چهارشنبه 13 اردیبهشت 1396

در این مقاله قصد داریم که یک مقداری را با استفاده ازshared preference نمایش، اضافه و ویراش و حذف نماییم که معمولا برای تنظیمات کتاب یا هر اپلیکیشنی از این تکنولوژی shared preference استفاده می نمایند.

ویرایش ، افزودن و حذف کردن مقدار با استفاده از shared preference در اندروید

در این سورس ما 3 تا کلاس داریم:

MainActivity.java

UpdateActivity.java

DisplayActivity.java

و همین طور از 3 لایه ی layout استفاده می نماییم:

activity_main.xml

activity_update.xml

activity_display.xml

این سورس چند کار با هم را انجام می دهد :

نمایش مقدار

ویرایش کردن مقدار

حذف مقدار

و افزودن مقدار

ابتدا در کلاس main activity قطعه کد زیر را اضافه نمایید:

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.v4.content.SharedPreferencesCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    Button buttonStore, buttonShow, buttonUpdate, buttonDelete ;
    EditText editText ;
    SharedPreferences sharedPreferences ;
    String ValueHolder;
    SharedPreferences.Editor editor ;
    Intent intent ;

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

        buttonStore = (Button)findViewById(R.id.storeValue);
        buttonShow = (Button)findViewById(R.id.showValue);
        buttonUpdate = (Button)findViewById(R.id.updateValue);
        buttonDelete = (Button)findViewById(R.id.deleteValue);
        editText = (EditText)findViewById(R.id.editText);

        sharedPreferences = getSharedPreferences("PreferencesTAG", Context.MODE_PRIVATE);


        buttonStore.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                if(sharedPreferences.getString("NAME", null) == null)
                {
                    editor = sharedPreferences.edit();

                    ValueHolder = editText.getText().toString() ;

                    editor.putString("NAME", ValueHolder);

                    editor.commit();

                    Toast.makeText(MainActivity.this,
                            "Value Submitted Successfully",
                            Toast.LENGTH_LONG).show();
                }
                else {

                    Toast.makeText(MainActivity.this,
                            "Value is Already filled into SharedPreferences. To update current value please click on Update button.",
                            Toast.LENGTH_LONG).show();

                }
            }
        });

        buttonShow.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                intent = new Intent(MainActivity.this, DisplayActivity.class);

                startActivity(intent);

            }
        });


        buttonUpdate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                intent = new Intent(MainActivity.this, UpdateActivity.class);

                startActivity(intent);

            }
        });

        buttonDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                editor = sharedPreferences.edit();

                editor.remove("NAME") ;

                editor.apply();

                editor.commit() ;

                Toast.makeText(MainActivity.this, "Value Deleted Successfully", Toast.LENGTH_LONG).show();

            }
        });

    }
}

حالا در قسمت layout قطعه کد زیر را قرار دهید:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.android_examples.sharedpreferences_android_examplescom.MainActivity"
    android:background="#FFF3E0">

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:hint="Enter SharedPreferences Value"
        android:ems="10"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="113dp"
        android:id="@+id/editText"
        android:gravity="center"/>

    <Button
        android:text="Click here to store ediitext value into sharedpreferences"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/storeValue" />

    <Button
        android:text="Show value stored in sharedpreferences"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/showValue"
        android:layout_below="@+id/storeValue"
        android:layout_marginTop="7dp"
         />

    <Button
        android:text="Update value stored in sharedpreferences"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/showValue"
        android:layout_marginTop="7dp"
        android:id="@+id/updateValue" />

    <Button
        android:text="Delete value stored in sharedpreferences"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/updateValue"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="7dp"
        android:id="@+id/deleteValue" />

</RelativeLayout>

برای ویرایش کردن مقدار کلاس هم از قطعه کد زیر استفاده نمایید:

import android.content.Context;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class UpdateActivity extends AppCompatActivity {

    EditText editText ;
    Button button ;
    String Holder, HolderUpdate ;
    SharedPreferences sharedPreferences ;
    SharedPreferences.Editor editor ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_update);

        editText = (EditText)findViewById(R.id.editText2);

        button = (Button)findViewById(R.id.button2) ;

        sharedPreferences = getSharedPreferences("PreferencesTAG", Context.MODE_PRIVATE);

        editor = sharedPreferences.edit();

        Holder = sharedPreferences.getString("NAME", null);

        editText.setText(Holder);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                HolderUpdate = editText.getText().toString() ;

                editor.putString("NAME", HolderUpdate);

                editor.commit();

                Toast.makeText(UpdateActivity.this, "SharedPreferences Value Updated.", Toast.LENGTH_LONG).show();

            }
        });

    }
}

لایه ی layout به صورت زیر خواهد بود:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_update"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.android_examples.sharedpreferences_android_examplescom.UpdateActivity"
    android:background="#FFF3E0">

    <EditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:inputType="textPersonName"
        android:ems="10"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="141dp"
        android:id="@+id/editText2"
        android:gravity="center"
        android:hint="Value Display Here"/>

    <Button
        android:text="Click Here To Update sharedpreference value "
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/button2" />

    <TextView
        android:text="Enter new value in EditText to update SharedPreference value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="23dp"
        android:id="@+id/textView"
        android:gravity="center"
        android:textSize="25dp"
        android:textColor="#000000"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

</RelativeLayout>

برای نمایش مقدار هم از کلاس زیر استفاده نمایید:

import android.content.Context;
import android.content.SharedPreferences;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class DisplayActivity extends AppCompatActivity {

    String Holder;
    SharedPreferences sharedPreferences ;
    TextView textView ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_display);

        sharedPreferences = getSharedPreferences("PreferencesTAG", Context.MODE_PRIVATE);

        Holder = sharedPreferences.getString("NAME", null);

        textView = (TextView)findViewById(R.id.textView3);

        textView.setText(Holder);


    }
}

لایه ی نمایش به صورت زیر خواهد بود:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_display"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.android_examples.sharedpreferences_android_examplescom.DisplayActivity"
    android:background="#FFF3E0">


    <TextView
        android:text="SharedPreferences Value = "
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="198dp"
        android:id="@+id/textView2"
        android:textColor="#000000"
        android:textSize="25dp"
        android:gravity="center"/>

    <TextView
        android:text="TextView"
        android:textColor="#000000"
        android:textSize="25dp"
        android:gravity="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView2"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="18dp"
        android:id="@+id/textView3" />

</RelativeLayout>

خروجی به صورت زیر خواهد بود:

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید