تاخیر یک مرحله ای در اجرایperefreces
من sorce آموزش perefrenc رو توی یکی از ایتم هاش توری تغییر دادم که وقتی کاربر دکمه red ،green ،blue رو میزنه backgrand صفحه عوض بشه کد درست کار میکنه ولی با یک مرحله تاخیر اجرا میشه یعنی وقتی کاربر روی قرمز کلیک میکنه هیچ اتفاقی نمی افته ولی روی سبز کلیک میکنه قرمز میشه و روی آبی که کلیک میکنه سبز میشه
با کلیک کردن،
مقداری قبلی که کلیک شده مقداردهی و اجرا میشه نه مقدار فعلی
اساتید راهنمایی
سوال دوم : در قسمت دیباگ قسمت variabelse هیچ متغیری نشون داده نمیشه علتش چیه؟
int color;
int colorValueInt ;
String hexColor ;
String colorValue ;
public void setActivityBackgroundColor(int color) {
View view = this.getWindow().getDecorView();
view.setBackgroundColor(color);
}
@Override
protected void onResume() {
colorValue = G.preferences.getString("USER_SELECTED_COLOR", "0");
colorValueInt = Integer.parseInt(colorValue);
hexColor = String.format("#%06X", (0xFFFFFF & colorValueInt));
color =Color.parseColor(hexColor);
setActivityBackgroundColor(color);
Log.i("log", "onResum Setting");
Log.i("LOG", "Color Value: " + colorValueInt );
super.onResume();
}
findPreference("USER_SELECTED_COLOR").setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
colorValue = G.preferences.getString("USER_SELECTED_COLOR", "0");
colorValueInt = Integer.parseInt(colorValue);
hexColor = String.format("#%06X", (0xFFFFFF & colorValueInt));
color =Color.parseColor(hexColor);
setActivityBackgroundColor(color);
return true;
}
});
از این که سوالم رو پرسیدم و کسی جواب نداد تصمیم گرفتم جواب خودم رو ،خودم بزارم شاید بدرد کسی خورد
ما وقتی روی Prefernce ها کلیک میکنیم 2مقدار وجود دارد یک مقداری که در xml ذخیره شده و مقدار دیگر مقدار جدیدی هست که توسط کاربر وارد میشود چنانچه از دستور
G.preferences.getString("USER_SELECTED_COLOR","0");
استفاده شود مقداری که در xml ذخیره شده هست فراخوانی میشود
ولی مقداری که هم اکنون توسط کاربر وارد شده و در xml هنوز ذخیره نشده و همزامان در حال ذخیره شدن هست رو همون NewValue هست که با فراخوانی
findPreference("USER_SELECTED_COLOR").setOnPreferenceChangeListener(newOnPreferenceChangeListener(){
@Override
publicboolean onPreferenceChange(Preference preference,Object newValue){
گرفته میشود خب مسله حل شد این newvalue همون مقدار فعلی کاربر هست که با log گرفتن میشه دید
Log.i("log", "New Value is :"+ newValue);
ومیتونید این newvalue رو هر جاکه خواستید استفاده کنید
سوال بعدی توی Perefrence
توی Return
setOnPreferenceChangeListener(newOnPreferenceChangeListener(){
@Override
publicboolean onPreferenceChange(Preference preference,Object newValue){
returntrue;
برای تغییرات اگه retun false باشه تغییرات ذخیره نمیشه ولی برای کلیک return false هم باشه متد کلیک اجرا میشه؟؟؟
یعنی False یا True فرقی نمیکنه؟
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .