ورود

View Full Version : استفاده از Shared Prefrences



barnamenevisjavan
چهارشنبه 28 خرداد 1393, 17:38 عصر
سلام من از کد زیر برای ذخیره مقدار استفاده میکنم SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
int counter = sharedPreferences.getInt("rozpak", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("rozpak", ++counter);
editor.commit();




ولی بعضی جا ها به کد Mode_Private خطا میگیره باید چیکار کنم تا بتونم همه جا از این کد استفاده کنم؟

harani
چهارشنبه 28 خرداد 1393, 18:15 عصر
این طوری استفاده کن :



SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(<activity class name>.this);
SharedPreferences.Editor editor = sharedPreferences.edit();
int counter = sharedPreferences.getInt("rozpak", 0);
editor.putInt("rozpak", ++counter);
editor.commit();

poorman
چهارشنبه 28 خرداد 1393, 18:18 عصر
چرا اسم شیء shared preferences رو نمی نویسید ؟

جای که getPreferences میکنید، علاوه بر mode اسم رو هم مشخص کنید

از این نمونه کد استفاده کنید

http://barnamenevis.org/showthread.php?447908-%D8%A7%DB%8C%D9%86-%D9%87%D9%85-%DA%A9%D8%AF&p=2008744&viewfull=1#post2008744

barnamenevisjavan
چهارشنبه 28 خرداد 1393, 18:24 عصر
این طوری استفاده کن :



SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(<activity class name>.this);
SharedPreferences.Editor editor = sharedPreferences.edit();
int counter = sharedPreferences.getInt("rozpak", 0);
editor.putInt("rozpak", ++counter);
editor.commit();




چرا اسم شیء shared preferences رو نمی نویسید ؟

جای که getPreferences میکنید، علاوه بر mode اسم رو هم مشخص کنید

از این نمونه کد استفاده کنید

http://barnamenevis.org/showthread.php?447908-%D8%A7%DB%8C%D9%86-%D9%87%D9%85-%DA%A9%D8%AF&p=2008744&viewfull=1#post2008744
توی هر دو کد به این بخش خطا میگیره getSharedPreferences و getDefaultSharedPreferences

poorman
چهارشنبه 28 خرداد 1393, 19:42 عصر
کجا دارید استفاده میکنید این کدها رو ؟

توی یک کلاسی که اکتیویتی نباشه خطا میگیرید

برای اینکه خطا نگیرید باید context اکتیویتی که میخواین این کد رو توش اجرا کنین به این تابع بفرستید و به جای this از context استفاده کنید

barnamenevisjavan
چهارشنبه 28 خرداد 1393, 20:00 عصر
یه نمونه کد از نت گرفتم که یکم استایل و ... داشت و بخاطر زیاد بودنش نمیشد توی پروژه جدید ازش استفاده کنم اونطور که من فهمیدم توی کدهای java به این صورت هستش
extends Fragment
من توی آندروید تازه کارم میشه یه نمونه کد مثال بزنید؟

poorman
چهارشنبه 28 خرداد 1393, 21:47 عصر
با فرگمنت کار نکردم والا، نمیدونم چطوره میشه context رو گرفت توی فرگمنت ها

harani
چهارشنبه 28 خرداد 1393, 23:19 عصر
context در فرگمنت برابر است با getActivity();

dasssnj
پنج شنبه 29 خرداد 1393, 07:54 صبح
اگه به MODE_PRIVATE گیر می ده . اینطوری بنویسش : Context.MODE_PRIVATE
چون MODE_PRIVATE یه متغیر استاتیک در کلاس کانتکسته.
و دلیلش اینه که شما از فرگمنت ساپورت لایبرری استفاده می کنید . نه خود فرگمنت Android.jar .

و همون طور که دوستان گفتن اگه جای دیگه ای به شئ Context نیاز داشتی با getActivity(); به دست بیارش.

barnamenevisjavan
پنج شنبه 29 خرداد 1393, 08:39 صبح
یعنی کد رو به این صورت کنم؟
SharedPreferences sharedPreferences = getPreferences(context.MODE_PRIVATE);
int counter = sharedPreferences.getInt("rozpak", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("rozpak", ++counter);
editor.commit();

dasssnj
پنج شنبه 29 خرداد 1393, 09:07 صبح
دقیقا اینطوری همین الان تست کردم شد :
SharedPreferences sharedPreferences = getActivity().getPreferences(Context.MODE_PRIVATE) ;
int counter = sharedPreferences.getInt("rozpak", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("rozpak", ++counter);
editor.commit();


اینم ایمپورت ها :
import android.content.Context;
import android.content.SharedPreferences;

barnamenevisjavan
پنج شنبه 29 خرداد 1393, 09:32 صبح
دقیقا اینطوری همین الان تست کردم شد :
SharedPreferences sharedPreferences = getActivity().getPreferences(Context.MODE_PRIVATE) ;
int counter = sharedPreferences.getInt("rozpak", 0);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("rozpak", ++counter);
editor.commit();


اینم ایمپورت ها :
import android.content.Context;
import android.content.SharedPreferences;

خیلی خیلی ممنون کار کرد.
فقط یه سوال دارم تفاوت Activity و Fragment چیه؟

dasssnj
پنج شنبه 29 خرداد 1393, 10:42 صبح
اکتیویتی همون طور که می دونید یه صفحه از برنامه است . ولی فرگمنت یه قسمت از اکتیویتیه. یعنی شما می تونید یک یا چند تا فرگمنت را در اکتیویتی استفاده کنید.
یعنی هر فرگمنت یه اکتیویتی کوچکه که قابلیت های اکتیویتی را داره.
مثلا توی بعضی برنامه ها اگه روی گوشی اجرا بشن یه فرگمنت نمایش داده میشه و با کلیک روی گزینه های درونش یه اکتیویتی باز میشه و یه فرگمنت دیگه را نشون میده و لی اگه روی تبلت اجرا شه با کلیک روی گزینه هاش یه فرگمنت دیگه کنار اون یکی نمایش داده میشه.(مثل برنامه ی settings اگه گوشی را با تبلت مقایسه کنید می فهمید)
در کل میشه با هاش یه اکتیویتی را قسمت بندی کرد.