به نام خدا
سلام دوستان عزیز همیار اندروید
در این آموزش میخام SharedPreferences رو آموزش بدم
SharedPreferences چیست ؟
SharedPreferences یک محل ذخیره سازی برای یک سری اطلاعات با حجم کم هستش که درفایل اصلی اپلیکیشن ذخیره می شوند
از آن جهت که SharedPreferences هر اپلیکیشن مخصوص همان اپلیکیشن هستش پس دیگر از سایر
اپلیکیشن ها نمی توان به آن دسترسی داشت و یک فایل امن محسوب می شود
و اما از جمله کاربردهای آن می توان به ثبت اطلاعات کاربر مانند یوزر و پسوورد برای ورود به اپلیکیشن ،
نوع نمایش لیست ها ،دریافت کردن یا نکردن نوتیفیکیشن ها و خیلی اطلاعات دیگر اما با حجم کم
مثال :
یک نوع از کاربرد SharedPreferences را با مثال براتون توضیح میدم که بیشتر این مبحث را درک کنید
من یک EditText دارم و میخام بار اولی که وارد برنامه میشم یک مقدار درون آن بنویسم
و هر موقع از برنامه خارج میشم و دوباره وارد برنامه میشم همون مقدار درون EditText باشه
یعنی ذخیره بشه و هر بار لازم نباشه که EditText رو پر کنم
به عبارت دیگر این کار ذخیره بشه و از تکرار جلوگیری کنه
و همچنین من بتونم مقدار را ویرایش یا پاک کنم و مقدار ویرایش شده را ذخیره کنم
خب میرم برای شروع آموزش
قدم اول
یک EditText برای نوشتن مقدار و یک Button برای انجام عملیات ذخیره کردن مقدار
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="HamyarAndroid.com"
android:textColor="#4BB84F"
android:textSize="30sp" />
<EditText
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="نام"
android:layout_marginTop="200dp"
android:layout_marginEnd="15dp"
android:layout_marginStart="15dp"/>
<Button
android:id="@+id/btn_save"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ذخیره"
android:layout_marginTop="50dp"/>
</LinearLayout>
قدم دوم
در این مرحله من باید در MainActivity کدهای جاو رو بنویسم
طبق کدهای زیر من میام و کلاس خودمو تکمیل میکنم و در پایان خط به خط براتون توضیح میدم
MainActivity.java
package com.hamyarandroid.sharedpreferences;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.SharedPreferences;
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 {
EditText editText;
Button button;
SharedPreferences Pref;
public static final String Name = "Key";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.name);
button = findViewById(R.id.btn_save);
Pref = getSharedPreferences("PrefFile", Context.MODE_PRIVATE);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String FirstName = editText.getText().toString();
SharedPreferences.Editor shEdit = Pref.edit();
shEdit.putString(Name, FirstName);
shEdit.apply();
Toast.makeText(MainActivity.this, "ذخیره شد", Toast.LENGTH_LONG).show();
}
});
if (Pref.contains(Name)) {
editText.setText(Pref.getString(Name, null));
}
}
}
خط های 15 و 16
EditeText و Button را معرفی کردم
خط 17
من اومدم و یک نمونه از SharedPreferences ایجاد کردم و نامش رو Pref گذاشتم
خط 26 و 27
ادیت تکست و باتن رو به آی دی هاشون در لایوت متصل کردم
خط 28
من در این خط میام و Pref رو مساوی با ()getSharedPreferences قرار میدم که دارای دوپارامتر name و mode هستش
که name مقدارش اختیاری هست و هر نامی میخایم میتونیم بزاریم
و کار ذخیره اطلاعات درون یک فایل از اپلیکیشن رو بر عهده داره که من نامش رو PrefFile گذاشتم
و اما mode انواع مختلفی داره و بستگی به اپلیکیشن شما داره که بخواهید از کدوم نوعش استفاده کنید
که من در اینجا از نوع MODE_PRIVATE استفاده کردم چون میخام هر موقع برنامه اجرا شد
فایلی که اطلاعاتم درونش ذخیره شدن رو در دسترس قرار بده
خط 30
به Button خاصیت کلیک میدم
خط 34
یک استرینگ ایجاد میکنم به نام FirstName که مقدار نوشته شده در EditeText را دریافت کند و به استرینگ تبدیل کند
خط 35
در اینجا من اطلاعات را ذخیره می کنم
که برای این کار یک SharedPreferences.Editor میسازیم و نامش را shEdit میزاریم
و توسط () shPref.edit اطلاعات رو ذخیره میکنیم
خط 36
توسط putString l مقدار FirstName را درون Name میریزیم
خط 37
در آخرین مرحله تغییرات صورت گرفته توسط این خط ذخیره می شوند
خط 39
یک پیغام برای کاربر که اطلاعاتش با زدن دکمه ذخیره می شود
خط 44 و 45
با ایجاد یک شرط گفتیم اگر EditText خالی بود مقدار خالی را برای ما ذخیره کن
خروجی کد بالا را میتوانید در پایین ببینید
امیدوارم از این آموزش استفاده مفید را ببرید
پیروز و موفق و سربلند باشین