استفاده از SharedPreferences در اندروید
یکشنبه 17 آبان 1394در این مقاله می خواهیم در مورد sharedpreferences صحبت کنیم، اینکه چه کاربردی دارد و چه مواقعی از آن استفاده می نمایند.
اگر سیستم ورود کاربران به سایت را دیده باشید یک Checkbox دارد "به نام مرا به خاطر بسپار"که شما با زدن آن می توانید اطلاعات خود را به صورت ذخیره شده داشته باشید.
با استفاده از shared Preferences می توانید اطلاعات تنظیمات نرم افزار را مداوم ذخیره نمایید.
تا زمانی که application مورد نظر نصب شده است اطلاعات شما ثبت خواهد شد به محض پاک کردن application اطلاعات قبلی پاک خواهد شد.
اغلب در تنظیمات گوشی مثل حالت روز و شب یا اندازه ی فونت و اندازه ی فاصله بین متن ها برای ذخیره ی موقت از اsharedpreferences استفاده می کنند.
اگر برنامه را ببندید و دوباره باز نمایید همان اطلاعات ذخیره خواهد شد، تا زمانی که اطلاعات را تغییر ندهید همان اطلاعات باقی خواهد ماند.
SharedPreferences ها اجازه ی ذخیره ی انواع داده ها را می دهد.مثل Boolean,float,int,long,string
getSharedPreferences(): این متد برای ذخیره ی اطلاعات استفاده می شود.
getPreferences(): برای نمایش اطلاعات ذخیره شده استفاده خواهد شد.
یک پوشه ی جدید به نام shared_prefs بسازید و یک فایل xml جدید ایجاد نمایید.
داخل shared preferences از چند متد استفاده می کنیم. ولی در اینجا از putstring() وputboolean استفاده می نماییم.
putBoolean(), putInt(), putFloat(), putString()
private SharedPreferences savePreferences; private SharedPreferences.Editor savePrefsEditor; savePreferences = getSharedPreferences("savePrefs", 0); savePrefsEditor = savePreferences.edit(); //If remember me checkbox is checked if (saveDetailsCheck.isChecked()) { //Set the data savePrefsEditor.putBoolean("saveLogin", true); savePrefsEditor.putString("username", username); savePrefsEditor.putString("password", email); //Commit the changes savePrefsEditor.commit(); Toast.makeText(getApplicationContext(), "Your details have been saved.", Toast.LENGTH_LONG).show(); }
برای واکشی اطلاعات می توان به صورت مستقیم از shared preferences استفاده کرد بدون استفاده از SharedPreferences.Editor متد ها ی آن هم به صورت زیر خواهد بود:
getBoolean(), getFloat(), getInt(), getLong(), getString()
private Boolean saveLogin; saveLogin = savePreferences.getBoolean("saveLogin", false); if (saveLogin == true) { UserName.setText(savePreferences.getString("username", "")); Email.setText(savePreferences.getString("password", "")); saveDetailsCheck.setChecked(true); }
کد بالا 2 متدی هستند که اولین بار نام را می گیرد، دومین بار مقدار پیش فرض را بر می گرداند، اگر preference موجود نباشد.
برای پاک کردن Shared Preferences از کد زیر استفاده می کنیم:
savePrefsEditor.clear(); savePrefsEditor.commit();
کد activity به صورت زیر خواهد بود:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="مرجع تخصصی برنامه نویسان" android:padding="20dp" android:layout_gravity="right"/> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="60dp" android:ems="10" android:hint="نام کاربری" android:layout_gravity="right" android:gravity="right"></EditText> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText1" android:layout_below="@+id/editText1" android:layout_marginTop="26dp" android:ems="10" android:hint="آدرس ایمیل" android:layout_gravity="right" android:gravity="right"/> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/editText2" android:layout_below="@+id/editText2" android:layout_marginTop="34dp" android:text="ذخیره اطلاعات" android:layout_gravity="right"/> <CheckBox android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/editText2" android:layout_below="@+id/editText2" android:text="مرا به خاطر بسپار" android:layout_gravity="right" android:layout_margin="10dp"/> </LinearLayout>
که از یک EditText, TextView, Button, checkbox استفاده شده است.
حالا کد کلاس جاوا به صورت زیر خواهد بود:
import android.app.Activity; import android.os.Bundle; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CheckBox; import android.widget.EditText; import android.widget.Toast; public class MyActivity extends Activity { EditText UserName, Email; Button Save; String username; String email; private CheckBox saveDetailsCheck; private SharedPreferences savePreferences; private SharedPreferences.Editor savePrefsEditor; private Boolean saveLogin; /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); UserName = (EditText) findViewById(R.id.editText1); Email = (EditText) findViewById(R.id.editText2); Save = (Button) findViewById(R.id.button1); saveDetailsCheck = (CheckBox) findViewById(R.id.checkBox1); savePreferences = getSharedPreferences("savePrefs", 0); savePrefsEditor = savePreferences.edit(); saveLogin = savePreferences.getBoolean("saveLogin", false); if (saveLogin == true) { UserName.setText(savePreferences.getString("username", "")); Email.setText(savePreferences.getString("password", "")); saveDetailsCheck.setChecked(true); } Save.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub username = UserName.getText().toString(); email = Email.getText().toString(); if (saveDetailsCheck.isChecked()) { savePrefsEditor.putBoolean("saveLogin", true); savePrefsEditor.putString("username", username); savePrefsEditor.putString("password", email); savePrefsEditor.commit(); Toast.makeText(getApplicationContext(), "اطلاعات شما با موفقیت ذخیره شد", Toast.LENGTH_LONG).show(); } else { savePrefsEditor.clear(); savePrefsEditor.commit(); } } }); } }
ابتدا کنترل های استفاده شده تعریف شده اند، و از متد getboolean استفاده شده است، اگر true باشد نام کاربری و کلمه ی عبور ذخیره خواهد شد، و checkbox باید true باشد.
حالا برای ذخیره ی اطلاعات باید چک کنیم که اگر checkbox مورد نظر تیک خورده باشد، نام کاربری و کلمه ی عبور به صورت موقت ذخیره شود.
زمانی که برنامه را اجرا کنید، اطلاعات به صورت موقت ذخیره شده است . زمانی که برنامه را دوباره اجرا نمایید اطلاعات شما ذخیره شده است.
در آخر یک پیغام به صورت Toast نمایش داده خواهد شد.
خروجی به صورت زیر خواهد بود:
- Android
- 3k بازدید
- 0 تشکر