آموزش SharedPreferences در اندروید

منتشرشده توسط حامد قنبری در تاریخ

در این آموزش قصد داریم یکی از روش های ذخیره اطلاعات را در اندروید برای کاربران عزیز توضیح دهیم. shared preference   روشی  بسیار مفید و کاربردی است که با استفاده از آن می توان داده های بسیاری را از انواع مختلف آن همانند String, long, integer , boolean  را ذخیره کرد. در این روش دادها در کلمات کلیدی مشخصی  ذخیره و بازیابی می شود. استفاده از این روش می تواند در پرهیز از پرگویی و همچنین به انسجام کلی برنامه کمک کند. از این رو  برنامه نویسان می توانند در هر اکتیویتی یا کلاس بدون حتی استفاده از دیتابیس یا روشهای انتقال اطلاعات همچون Intent با توجه به کلمات کلیدی رمزنگاری شده در آن به حجم انبوهی از اطلاعات دسترسی پیدا کنند. اجازه دهید قبل از استفاده کاربردی آن در مثال ارائه شده ، ساختار کلی آن را تشریح کنیم.

sharedpreferences = getSharedPreferences(MyPREFERENCES, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedpreferences.edit();
editor.putString("KEYWORD",variable);
 editor.commit();

در کد بالا با فراخوانی SharedPreferencees و تعریف اختصاصی آن با متغیر sharedpreferences قابلیت دسترسی آن را محدود به همین نرم افزار می کند.در خط دوم با فراخوانی Editor از همان کلاس آن را در قالب متغیر editor قرار می دهد .متد Editor همان ضرورتی است که برای ویرایش اطلاعات باید فراخوانده شود. در خط سوم با قرار دادن متغیر از نوع string  در ویرایشگر SharedPreferencees آن را با   KEYWORD دلخواه رمزنگاری می کند . و نهایتاً در خط چهارم فرمان اجرای آن را صادر می کند.

به منظور درک بیشتر ذکر یک مثال خالی از لطف نخواهد بود.

پروژه جدیدی را در اندروید استودیو یا اکلیپس ایجاد کنید

   اکلیپس :File ⇒ New Android ⇒ Application Project

اندروید استودیو :File ⇒ New  ⇒ New Project

 نام اکتیویتی ابتدایی و اصلی خود  را MainActivity بگذارید.

 کلاس جدیدی را از پکیج اصلی  به پروژه اضافه کنید و نام آن را VerfiyShared بگذارید.( برای این کار روی پکیج اصلی راست کلیک کرده و از منوی new گزینه java  را انتخاب کنید و در پنجره ظاهر شده نام آن را  VerfiyShared بگذارید).

به دنبال ایجاد کلاس جدید VerfiyShared، از مسیر res ⇒ layout لایوت جدیدی را ایجاد کرده و نام آن را activity_shared بگذارید. البته در کنار لایوت ایجاد شده لایوت دیگری به نام activity_main وجود دارد که لایوت اکتیویتی اصلی یا همان MainActivity است.

در مسیر res ⇒ layout لایوت activity_main  را باز کرده و کدهای Xml آن را بدین صورت زیر می نویسیم:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:id="@+id/phone"
        android:hint="your phone number"
        android:layout_marginTop="50dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" 
        android:gravity="center"/>
    <EditText
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:id="@+id/Email"
        android:hint="your Email Adress"
        android:layout_below="@+id/phone"
        android:gravity="center"/>
    <Button
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:id="@+id/save"
        android:layout_below="@+id/Email"
        android:text="save data with SharedPreferences"
        android:textSize="14dp"/>
    <Button
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:id="@+id/verifyData"
        android:layout_below="@+id/save"
        android:text="verify data of SharedPreferences"
        android:textSize="14dp"/>

</RelativeLayout>

بعد از افزودن کدهای xml  به لایه main_activity ، مستقیم به سراغ لایوت activity_verfiyshared.xml می رویم و کدهای زیر را به شکل زیر به آن اضافه می کنیم.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:text="your phone"
        android:gravity="center"
        android:id="@+id/textView"
        android:layout_marginTop="48dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
    <TextView
    android:layout_width="fill_parent"
    android:layout_height="40dp"
    android:id="@+id/tv1"
        android:layout_below="@+id/textView"
        android:layout_centerHorizontal="true"
        android:gravity="center"/>
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:text="your email"
        android:layout_above="@+id/tv2"
        android:gravity="center"/>
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:id="@+id/tv2"
        android:layout_centerVertical="true"
        android:layout_alignLeft="@+id/tv1"
        android:layout_alignStart="@+id/tv1"
        android:gravity="center"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Exit"
        android:id="@+id/button"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="61dp" />

</RelativeLayout>

 

حال نوبت به کدنویسی کلاس ها جاوا می رسد. نخست به سراغ MainActivity می رویم و کدهای زیر را به شکل زیر به آن اضافه می کنیم:

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

public class MainActivity extends AppCompatActivity {



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 final EditText phone = (EditText)findViewById(R.id.phone);
 final   EditText email = (EditText)findViewById(R.id.Email);
 Button btnsave = (Button)findViewById(R.id.save);
 Button btnverify = (Button)findViewById(R.id.verifyData);
 final SharedPreferences myPrefs3 = this.getSharedPreferences("myPrefs", MODE_PRIVATE);

        btnsave.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String strphone = phone.getText().toString();
                String stremail= email.getText().toString();
                SharedPreferences.Editor shpE3= myPrefs3.edit();
                shpE3.putString("PHONE", strphone);
                shpE3.putString("EMAIL", stremail);
                shpE3.apply();
                Toast.makeText(MainActivity.this, "saved", Toast.LENGTH_LONG).show();
            }
        });
        btnverify.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, VerfiyShared.class);
                startActivity(intent);
            }
        });


    }
}
 

سپس کلاس VerifyShared را باز نموده و کدهای زیر را در آن قرار می دهیم :


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

public class VerfiyShared extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_verfiyshared);
        final   TextView phonedisplay = (TextView)findViewById(R.id.tv1);
    final   TextView  emaildisplay = (TextView)findViewById(R.id.tv2);
        Button btnverify = (Button)findViewById(R.id.button);


       final SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_PRIVATE);


        btnverify.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String yourphone = (myPrefs.getString("PHONE", ""));
                String yourmail = (myPrefs.getString("EMAIL", ""));
                phonedisplay.setText(yourphone);
                emaildisplay.setText(yourmail);
            }
        });


    }
}

 

و در نهایت فایلAndroidManefest.xml باز نموده و کدهای زیر به شکل زیر به آن می افزاییم

 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.site.psrd.sharedpreferences">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="SharedPreference of psrd.ir"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity"
            android:label="SharedPreference of psrd.ir"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".VerfiyShared"
            android:label="SharedPreference of psrd.ir">


        </activity>

    </application>

</manifest>

 

حال می توانید پروژه را اجرا کرده و با بهره گیری از مثال فوق، برنامه های کارآمدتری بسازید.

برای دانلود سورس پروژه اینجا کلیک کنید.

برای دانلود apk این پروژه اینجا کلیک کنید.

 کپی برداری از محتوای سایت psrd، ممنوع بوده و پیگرد قانونی دارد. (تنها استفاده شخصی کاربران ، مجاز است) (کپی برداری توسط سایر وب سایت ها  غیرقانونی بوده و در صورت رویت به ستادسازماندهی اطلاع داده خواهد شد.

 




0 دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

-- بارگیری کد امنیتی --