PDA

View Full Version : مشکل با shared preferences



ho3ein.3ven
دوشنبه 06 مرداد 1393, 17:16 عصر
سلام .

من در هنگام شروع برنامم دستورات زیر رو اجرا می کنم :

final SharedPreferences shp = getSharedPreferences(Var[row][num], MODE_PRIVATE);
if (shp.getString(Var[row][num], "false")=="true")
{
dl.setEnabled(false);
}
else
{
dl.setEnabled(true);
}

بعد یک جای برنامم دستورات زیر رو اجرا می کنم برای تغییر دادن مقدار shared pereferences :

SharedPreferences shp = getSharedPreferences(Var[row][num], MODE_PRIVATE);
SharedPreferences.Editor shpE= shp.edit();

shpE.putString(Var[row][num], "true");

shpE.commit();

برنامه رو روی شبیه ساز اجرا می کنم و مشکلی نداره ولی روی گوشی که تست می کنم جواب نمیده . یعنی مقدار shared preferences تغییر نمی کنه .

ho3ein.3ven
سه شنبه 07 مرداد 1393, 09:53 صبح
دوستان اگه امکانش هست راهنمایی کنید .

barnamenevisjavan
سه شنبه 07 مرداد 1393, 10:22 صبح
فکر کنم توی صفحه های مختلف ازش استفاده میکنی دلیلش اینه ک این shared از همه جای برنامه قابل دسترسی نیست
یه کلاس جدید بساز و کدهای زیر رو قرار بده
package ir.Mahdi.selfregulation;


import android.content.Context;
import android.content.SharedPreferences;


public class SharedP {
private static String MY_STRING_PREF = "detail";
private static String MY_INT_PREF = "detail";
private static String MYY_INT_PREF = "detail";


private static SharedPreferences getPrefs(Context context) {
return context.getSharedPreferences("detail", 0);
}


public static String getMyStringPref(Context context) {
return getPrefs(context).getString(MY_STRING_PREF, "default");
}


public static int getMyIntPref(Context context) {
return getPrefs(context).getInt(MY_INT_PREF, 42);
}


public static void setMyStringPref(Context context, String value) {
// perform validation etc..
getPrefs(context).edit().putString(MY_STRING_PREF, value).commit();
}


public static void setMyIntPref(Context context, int value) {
// perform validation etc..
getPrefs(context).edit().putInt(MY_INT_PREF, value).commit();
}


public static void ssetMyIntPref(Context context, int value) {
// perform validation etc..
getPrefs(context).edit().putInt(MYY_INT_PREF, value).commit();
}

public static int ggetMyIntPref(Context context) {
return getPrefs(context).getInt(MYY_INT_PREF, 42);
}
}




هرجا خواستی استفاده کنی اول یه نمونه ازش بساز
Sharedp shr = new Sharedp();


هرجا خواستی مقداری رو بخونی
shr.getMyStringPref(getApplicationContext())
بعدش هرجا خواستی مقداری رو اضافه یا تغییر بدی
shp.setMyStringPref(getApplicationContext(), "مقدار");

ho3ein.3ven
سه شنبه 07 مرداد 1393, 11:08 صبح
از این نمی تونم استفاده کنم .

من از shared preferences فقط در یک اکتیویتی استفاده میکنم . بر اساس اطلاعاتی که در اکتیویتی قبلی وارد میشه یک shared preferences جدید ایجاد می کنه .

یعنی کد هام مشکلی نداره ؟

ho3ein.3ven
سه شنبه 07 مرداد 1393, 15:10 عصر
پس مجبورم از دیتابیس استفاده کنم دیگه