ذخیره اطلاعات با sharedpreferences در اندروید
ذخیره اطلاعات با sharedpreferences در اندروید
برای ذخیره اطلاعت در اندروید راه های مختلفی است.روشی که امروز به ان میپردازیم sharedpreferences است که بسیار خوب و کاربردی است.
البته باید به این موضوع توجه داشت که sharedpreferences برای ذخیره اطلاعت غیر ضروری است زیرا در صورت حذف برنامه اطلاعت ذخیره شده هم حذف خواهند شد
در روشی که امروز به شما اموزش خواهیم داد شما با ایجاد یک کلاس میتوانید به راحتی در هر activity که میخواهید ان را بخوانید و اطلاعت را در ان ذخیره کنید.
خب برای این کار یک کلاس جدید که در این مثال نام کلاس را shpre گذاشته ایم ایجاد کنید و کد های زیر را در ان قرار دهید:
1 2 3 4 5 6 7 8 9 10 11 12 13 | package com.example.exampe.example; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; public class shpre extends YourActiviy { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences shpre = PreferenceManager.getDefaultSharedPreferences(this); String username = shpre.getString("username", ""); String password = shpre.getString("password", ""); } } |
توجه کنید که در خط اول که package com.example.exampe.example; قرار دارد مشخصات برنامه خود شماست و در خط بعدی موارد لازم را تعریف کردیم.منظور از YourActivity هم که واضح است که نام اکتیویتی شماست.
داخل کلاس دستور زیر که دو متغیر از نوع رشته ای هستند برای ذخیره سازی اطلاعت خودمون در برنامه است:
1 2 | String username = prefs.getString("username", ""); String password = prefs.getString("password", ""); |
دو کلمه کلیدی که در اینجا نام ان هارا username و password گذاشته ایم کلماتی هستند که برای پیدا کردن و یا اشاره به این دو متغیر در برنامه از ان استفاده میکنیم که در ادامه اموزش بیشتر اشنا میشوید با ان ها.در قسمت دوم هم که ما مقدار خالی “” قرار دادیم مقدار پیشفرض است که در صورت قرار نگرفتن مقداری در متغیر ان ها مقدار پیشفرض هستند که نمایش داده خواهند شد.
خب حالا به اکتیویتی خودمون میرویم و میخاهیم نحوه قرار دادن و نحوه خواندن را ببینیم.
نحوه قرار دادن مقداری در متغیر:
1 2 3 4 | SharedPreferences sh = getSharedPreferences("shpre", MODE_PRIVATE); SharedPreferences.Editor editor = sh.edit(); editor.putString("username", "sepehr"); editor.commit(); |
در بعضی جاها هم شاید دیده باشید از editor.apply(); استفاده میشود.commit یک مقدار بولین را بر میگرداند که نشان میدهد ذخیره سازی با موفقیت انجام شده است یا خیر.
همین کار را میتوانیم برای password هم انجام دهیم.
1 2 3 4 | SharedPreferences sh = getSharedPreferences("shpre", MODE_PRIVATE); SharedPreferences.Editor editor = sh.edit(); editor.putString("password", "1234"); editor.commit(); |
نحوه خواندن مقدار متغیر:
برای خواندن مقدار متغیر از کد زیر استفاده میکنیم که تفاوت های کمی با کد بالا دارد که متوجه ان خواهید شد:
1 2 3 | SharedPreferences sh = getSharedPreferences("shpre", MODE_PRIVATE); SharedPreferences.Editor editor = sh.edit(); String mystring = sh.getString("username", "") |
خب همانطور که میبینید در این کد به جای PutString که برای قرار دادن بود از GetString استفاده کردیم که برای خواندن مقدار داخل متغیر است.و در ادامه هم از کلمه کلیدی متغیر username استفاده کردیم و مقدار دومی هم مقدار پیشفرض.
میتوانید از ارایه هم برای مقدار های بیشتر استفاده کنید.
امیدوارم مطالب مفید بوده باشند
موفق باشید.
سلام و درود به شما آموزگار محترم
راستش من برنامه نویسی را تازه شروع کردم و کاری که می خوام را از توضیحات شما متوجه نشدم ، من چک بوکس دارم و می خوام بعد بستن برنامه تغییر نکنه ، می شه برای چک بوکس هم یه مثال دوم بزنید؟
سپاس گذارم
با تشکر
سلام ببیند شما باید یه Sharedpreferences بگیرد و چک کنید که این checkbox اگر کلیک شد یعنی در رویداد oncheckcahnged مقدار Sharedpreferencesرو تغییر دهید بعدا که وارد برنامه شدید چک کنید این Sharedpreferences تغییر کرده یا خیر اگر تغییر کرده بود رویداد check مروبط به checkbox رو true قرار دهید.
موفق باشید.
سلام مرسی از آموزش های بسیار مفید و کاربردی تون
لطفا آموزش Sharedpreferences رو برای اعمال تغییرات در ریسایکل ویو قرار بدید!!
من خودم ی سری کارت دارم ک همش داخل ریسایکل ویو هست و در اکتیویتی اصلی هم ی دکمه برا افزایش و کاهش بزرگنمایی اطلاعات داخل ریسایکل ویو ولی هر کاری میکنم تغییرات اعمال نمیشه
اگ ی اموزش برا ریسایکل بذارید ممنون میشم