آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

تاخیر یک مرحله ای در اجرایperefreces

rad  7 سال پیش  7 سال پیش
0 0

من 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;
}
});
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
rad  7 سال پیش
+1 0

از این که سوالم رو پرسیدم و کسی جواب نداد تصمیم گرفتم جواب خودم رو ،خودم بزارم شاید بدرد کسی خورد

ما وقتی روی 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 رو هر جاکه خواستید استفاده کنید

 

پاسخ به سوال 
rad  7 سال پیش
0 0

سوال بعدی توی Perefrence

توی Return

setOnPreferenceChangeListener(newOnPreferenceChangeListener(){
@Override
publicboolean onPreferenceChange(Preference preference,Object newValue){
returntrue;

برای تغییرات اگه retun false باشه تغییرات ذخیره نمیشه ولی برای کلیک return false هم باشه متد کلیک اجرا میشه؟؟؟

 یعنی False یا True فرقی نمیکنه؟


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .