View Full Version : درخواست توضیح در مورد برنامه ای که نوشتم !!!
Sina.iRoid
سه شنبه 14 بهمن 1393, 23:43 عصر
سلام دوستان. لطف کنید به کد های زیر نگاه کنید و اگر امکانش هست خط به خط در موردش توضیح بدین. مخصوصا در مورد keyValue ها که در نظرگرفته شده. ممنون.
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.EditText;
public class MainActivity extends Activity {
private EditText eText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_main);
eText = (EditText) findViewById(R.id.eText01);
SharedPreferences settings = getSharedPreferences("MYPREFS", 0);
eText.setText(settings.getString("tValue", ""));
}
@Override
protected void onStop() {
super.onStop();
SharedPreferences settings = getSharedPreferences("MYPREFS", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("tValue", eText.getText().toString());
editor.commit();
}
}
NeoFighT
چهارشنبه 15 بهمن 1393, 00:40 صبح
این کد از SharedPreferences استفاده کرده
SharedPreferences یک سیستم برای ذخیده اطلاعات برنامه هستش به صورتی که اگه برنامه بسته بشه اطلاعات باقی میمونه.
جاهایی که لازم هست رو میگم.
SharedPreferences settings = getSharedPreferences("MYPREFS", 0);
eText.setText(settings.getString("tValue", ""));
در خط اول یک SharedPreferences ساختیم و با getSharedPreferences مقدار دهیش کردیم و اسم اون MYPREFS هست.
(شما توی یک برنامه هر چند تا که بخواین میتونین SharedPreferences بسازین و هر کدوم یک اسم واسه خودشون دارن)
(اگه SharedPreferences با اون اسم موجود نبود یک SharedPreferences جدید ساخته میشه)
در خط دوم این کد
settings.getString("tValue", "")
یک String رو از SharedPreferences میخونه و
پارامتر اول key یا همون کلیدمون هست(هر اطلاعاتی که داخل SharedPreferences ذخیره میکنیم یک key دارن که با استفاده از اون key میتونیم بهش دسترسی پیدا کنیم.)
پارامتر دوم مقدار پیشفرض هست که در صورتی که اطلاعاتی با اون key وجود نداشت این مقدار پیشفرض برگردونده میشه ولی اگه اطلاعات موجود بود خود اطلاعات برگردونده میشه.
کد های داخل onStop وقتی اجرا میشن که اکتیویتی بسته میشه.
SharedPreferences settings = getSharedPreferences("MYPREFS", 0);
SharedPreferences.Editor editor = settings.edit();
این کد هم که خط اولش مشخصه
ما وقتی که بخوایم اطلاعات داخل SharedPreferences رو تغییر بدیم باید از کلاس داخلی Editor استفاده کنیم و برای مقدار دهی اون از
settings.edit();
استفاده میکنیم.
editor.putString("tValue", eText.getText().toString());
editor.commit();
این کد هم خط اولش با استفاده از شیء Editor مقدار رشته ای که key اون "tValue" هست رو تغییر میده به چیزی که داخل EditText نوشته شده باشه.
خط دوم رو هم برای اعمال شدن تغییرات باید بنویسیم تا تغییرات اعمال بشه.
Sina.iRoid
چهارشنبه 15 بهمن 1393, 07:55 صبح
سلام
دوست عزیز توضیحاتی و که فرمودین در حد عالی بود. واقعا ممنون از شما.
فقط یه سوال دیگه. مقداره صفر در زمان ساخت SharedPreferences برای چی هست؟
باز هم سپاس از شما برای توضیحات :)
NeoFighT
چهارشنبه 15 بهمن 1393, 08:29 صبح
پارامتر دوم همون طور که میدونین از نوع int هست و Mode یا حالت SharedPreferences رو مشخص میکنه و از ثابت های زیر میتونین استفاده کنید.
(هر کدوم از ثابت های زیر یک مقدار از نوع عدد دارن که مقدار MODE_PRIVATE برابر 0 هست و در برنامه ی شما مستقیم عدد 0 قرار داده شده ولی بهتره که خود ثابت رو قرار بدیم فقط برای خوانایی بهتر).
MODE_APPEND
This will append the new preferences with the already exisiting preferences
MODE_ENABLE_WRITE_AHEAD_LOGGING
Database open flag. When it is set , it would enable write ahead logging by default
MODE_MULTI_PROCESS
This method will check for modification of preferences even if the sharedpreference instance has already been loaded
MODE_PRIVATE
By setting this mode , the file can only be accessed using calling application
MODE_WORLD_READABLE
This mode allow other application to read the preferences
MODE_WORLD_WRITEABLE
This mode allow other application to write the preferences
این ثابت ها داخل Context قرار دارند(داخل اکتیویتی هم هستند)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.