فیلم آموزشی ذخیره اطلاعات SharedPreferences.Editor
آموزش کار با SharedPreferences.Editor
SharedPreferences.Editor
سلام دوستان عزیز خانه اندروید در این پست می خواهیم بپردازیم به ذخیره اطلاعات به روش SharedPreferences.Editor هست. توی آموزش قبل اومدیم از حافظه داخلی به روش فایل اطلاعات رو خواندیم و هم نوشتیم .اگر آموزش قبل رو مشاهده نکردید حتما فیلم آموزشی جلسه پیش رو ببنید تا بهتر بتونید متوجه شید که چطور می خواهم اطاعات رو ذخیره کنیم و بخونیم.
نکته : فیلم آموزشی این قسمت در انتهای همین پست قرار گرفته شده است و برای هرچه بهتر یادگیری حتما دانلود کنید.
اما بریم سراغ توضیحات تکمیلی برای SharedPreferences.Editor :
SharedPreferences چیست ؟ چرا استفاده می کنیم : بزارید براتون مثالی جامعه ازش بزنیم که قابل درک باشه برای همه دوستان . تصویر کنید اپلیکیشنی را نوشتید کاربر پس اجرا اپلیکیشن شما در بخش splash اسکرین آهنگی را قرار دادید که به محض باز شدن اکتیویتی اسپلش شروع به بخش می کند و مشکلی هست اینه که کاربر دوست نداره دفعه بعد اومد داخل اپلیکیشن و وارد اسپلش شد دیگه آهنگی براش پخش بشه پس شما باید در بخش تنظیمات قسمتی رو قرار بدید که کاربر انتخاب کنه بخواهد آهنگ براش پخش بشه یا نشه .
و یا در نظر بگیرد که توی کلی گروه و کانال تگلرام عضو هستید و قسمت notification هر کدام از گروه و کانال رو می توانید غیر فعال کنید و انتظار دارید پس از ورود دوباره به اپلیکیشن تلگرام گروه ها براتون قسمت notification غیر فعال باشه پس برای این روش از SharedPreferences استفاده می کنیم.اما ، ما در این پست فقط به قسمت PutString می پردازیم و کاری که انجام می دهیم. نام و نام خانوادگی و آدرس وبسایت شخصی رو دریافت و ذخیره می کنیم.
روش اول SharedPreferences.Editor :
لطفا پروژه جدیدی را ایجاد کنید . اگر یاد ندارید پروژه جدید را ایجاد کنید از لینک زیر این آموزش رو حتما ببنید:
ایجاد پروژه جدید اندروید استودیو Android Studio
اما بریم سراغ ادامه آموزش پس از ایجاد کردن پروژه جدید در بخش xml یا دیزاین سورس کد زیر را تایپ کنید و یا ctrl+c و در بخش سورس کد دیزاین ctrl+v
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://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.app.homeandroidir.sharedpreferences_homeandroidir.MainActivity" android:orientation="vertical" android:weightSum="1"> <EditText android:layout_width="match_parent" android:layout_height="50dp" android:id="@+id/Etxt_name"/> <EditText android:layout_width="match_parent" android:layout_height="50dp" android:id="@+id/Etxt_family" android:layout_weight="0.02" /> <EditText android:layout_width="match_parent" android:layout_height="50dp" android:id="@+id/Etxt_site"/> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" android:orientation="horizontal" android:gravity="center"> <Button android:layout_width="100dp" android:layout_height="50dp" android:text="@string/btn_view" android:id="@+id/btnview_inforamtion"/> <Button android:layout_width="100dp" android:layout_height="50dp" android:id="@+id/btnsave_information" android:text="@string/btnsave"/> </LinearLayout> <TextView android:layout_width="match_parent" android:layout_height="40dp" android:id="@+id/Txt_view_name"/> <TextView android:layout_width="match_parent" android:layout_height="40dp" android:id="@+id/Txt_view_family"/> <TextView android:layout_width="match_parent" android:layout_height="40dp" android:id="@+id/Txt_view_site"/> </LinearLayout>
توضیحات سورس کد بالا :
برای ذخیره سازی اطلاعات SharedPreferences.Editor
سه تا Edittext نیاز داریم برای گرفتن نام و نام خانوادگی و آدرس وبسایت شخص مورد نظر سپس دو تا دکمه نیاز داریم برای ذخیره و نمایش اطلاعات و مرحله آخر نمایش اطلاعات که سه تا TextView نیاز داریم.لطفا سورس کد بالا رو به دقت نگاه کنید دوستان کاملا واضح براتون توضیح دادم و در دوباره یادآوری می کنم که دوستان فیلم آموزشی در انتهای پست هست و می توانید دانلود کنید.
سورس کد بخش جاوا :
package com.app.homeandroidir.sharedpreferences_homeandroidir; 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.TextView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { EditText EditTextname,EditTextfamily,EditTextsite; Button btnsave,btnview; TextView textViewname,textViewfamily,textViewsite; SharedPreferences sharedpredata; static String filename=""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cast(); btnsave.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { pach(); SharedPreferences.Editor shEditor= sharedpredata.edit(); shEditor.putString("keyname",EditTextname.getText().toString()); shEditor.putString("keyfamily",EditTextfamily.getText().toString()); shEditor.putString("keysite",EditTextsite.getText().toString()); shEditor.commit(); Toast.makeText(MainActivity.this, "اطلاعات با موفیت ذخیره شد.", Toast.LENGTH_SHORT).show(); } }); btnview.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { pach(); String name=sharedpredata.getString("keyname","متاسفانه نامی وارد نشده است"); String family=sharedpredata.getString("keyfamily","نام خانوادگی وارد نشده است."); String site=sharedpredata.getString("keysite","ادرس وبسایت وارد نشده است."); textViewname.setText(name.toString()); textViewfamily.setText(family.toString()); textViewsite.setText(site.toString()); } }); } void pach() { sharedpredata = getSharedPreferences(filename,0); } void cast() { EditTextname =(EditText)findViewById(R.id.Etxt_name); EditTextfamily=(EditText)findViewById(R.id.Etxt_family); EditTextsite=(EditText)findViewById(R.id.Etxt_site); btnsave=(Button) findViewById(R.id.btnsave_information); btnview=(Button) findViewById(R.id.btnview_inforamtion); textViewname=(TextView) findViewById(R.id.Txt_view_name); textViewfamily=(TextView) findViewById(R.id.Txt_view_family); textViewsite=(TextView) findViewById(R.id.Txt_view_site); } }
توضیح سورس کد بخش جاوا :
اول اومدیم معرفی کردیم دکمه و .. :
EditText EditTextname,EditTextfamily,EditTextsite; Button btnsave,btnview; TextView textViewname,textViewfamily,textViewsite; SharedPreferences sharedpredata; static String filename="";
سپس پس از معرفی تابع کست cast رو نوشتیم برای متصل کردن جاوا به بخش دیزاین:
void cast() { EditTextname =(EditText)findViewById(R.id.Etxt_name); EditTextfamily=(EditText)findViewById(R.id.Etxt_family); EditTextsite=(EditText)findViewById(R.id.Etxt_site); btnsave=(Button) findViewById(R.id.btnsave_information); btnview=(Button) findViewById(R.id.btnview_inforamtion); textViewname=(TextView) findViewById(R.id.Txt_view_name); textViewfamily=(TextView) findViewById(R.id.Txt_view_family); textViewsite=(TextView) findViewById(R.id.Txt_view_site); }
پس از مراحل فوق برای هرکدام از دکمه متد setOnClickListener کلیک لیسنر رو ست کردیم.و برای ذخیره سازی اطلاعات سورس کد زیر را نوشتیم.
btnsave.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { pach(); SharedPreferences.Editor shEditor= sharedpredata.edit(); shEditor.putString("keyname",EditTextname.getText().toString()); shEditor.putString("keyfamily",EditTextfamily.getText().toString()); shEditor.putString("keysite",EditTextsite.getText().toString()); shEditor.commit(); Toast.makeText(MainActivity.this, "اطلاعات با موفیت ذخیره شد.", Toast.LENGTH_SHORT).show(); } });
و برای نمایش اطلاعات متد زیر را پیاده سازی کرده ایم.
btnview.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { pach(); String name=sharedpredata.getString("keyname","متاسفانه نامی وارد نشده است"); String family=sharedpredata.getString("keyfamily","نام خانوادگی وارد نشده است."); String site=sharedpredata.getString("keysite","ادرس وبسایت وارد نشده است."); textViewname.setText(name.toString()); textViewfamily.setText(family.toString()); textViewsite.setText(site.toString()); } });
و در آخر چون یک مقدار تکراری داریم در یک زیر روال قرار دادیم و فراخونی کرده ایم.
void pach() { sharedpredata = getSharedPreferences(filename,0); }
لطفا فیلم آموزشی رو هم ببنید برای توضیحات بیشتر :
دانلود فیلم آموزشی ذخیره اطلاعات SharedPreferences.Editor
حجم فیلم : ۳۹ مگابایت
پسورد فایل فشرده : homeandroid.ir
منبع آموزش : خانه اندروید
سلام من سوال دارم آیا میتونم تماس هم بگیرم
سلام و درود
سوال شما رو در قالب دوره اموزشی پاسخگو هستیم.
با احترام.
سلام
من میخوام یه int اولیه تعریف کنم که مثلا مقدارش 0 هست بعد با عملیاتی مثل کلیک دکمه 10 تا اضافه بشه چجوری میتونم تغییر مقدار int رو ذخیره کنم؟
سلام بزرگوار برای ذخیره شما باید اول به String تبدیل کنید و سپس ذخیره کنید.
SharedPreferences sp = getSharedPreferences(“your_prefs”, Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putInt(“your_int_key”, Stringvalueof(yourIntValue));
editor.commit();
آقای ادمین فهمیدم قضیه چیه.
اشتباه از خودم بود که برای مقدار خالی بهش یه متنی داده بودم و فکر میکردم از قبل توش ذخیره شده.
ببخشید
سلام و احترام
موفق باشین.خواهش می کنم.