آموزش ساخت علاقه مندی با Shared Perference
سلام من چند وقت بود دنبال ساخت قسمت علاقه مندی با این روش بودم تا به لطف خدا ودوستان موفق شدم گفتم این آموزشو بذرم تا دوستان هم استفاده کنن
فرض کنید ما یک اکتیویتی(1) داریم (حالا ممکن شما 100 تا داشته باشین) تو لایه گرافیگی این اکتیویتی یک Image View داریم که میخایم با کلیک روی این ImageView اولن عکس اون از حالت خاموش به روشن تبدیل بشه بعدش هم بره به اکتیویتی علاقه مندی ها (2) کد اکتیویتی (1) به این صورت هستش
public class DDActivity extends Activity {
ImageView img_fav;
boolean check;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
img_fav = (ImageView)findViewById(R.id.img_fav);
img_fav.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
check = G.preference2.getBoolean("KEY_FAV", false);
if(check ==false){
SharedPreferences.Editor edit = G.preference2.edit();
edit.putBoolean("KEY_FAV", true);
edit.commit();
img_fav.setImageResource(R.drawable.on);
Toast.makeText(G.context, "به لیست علاقه مندی اضافه شد", Toast.LENGTH_SHORT).show();
}else if(check==true){
SharedPreferences.Editor edit = G.preference2.edit();
edit.putBoolean("KEY_FAV", false);
edit.commit();
img_fav.setImageResource(R.drawable.off);
Toast.makeText(G.context, "از لیست علاقه مندی حذف شد", Toast.LENGTH_SHORT).show();
}
}
});
}
}
اون بولین که اسمش هست check مقدار Shared Perferences رو میگره یعنی اگه کلید KEY-FAV تو لیست بود میشه true اگه نبود میشه false حالا شرط میذلریم اگه check برابر false بود یعنی اون کلید KEY-FAV تو لیست Shared Perfermce نبود بیا Shared Perference ادیت کن مقدارشو بکن true بعدش عکس خاموش تبدیل به روشن کن بعدش یک Toast نشون بده
حالا قسمت else if دقیقا برعکس بالا عمل میکنه حالا کد زیر برای اینه که وقتی از برنامه خارج میشه دوباره میای اکتیویتی(1) باز میکنی چک میکنه مقدار Shared Perference اگه true بود عکس روشن(on) نمایش داده میشه در غیر اینصورت عکس خاموش (off) ادامه دارد....................
if(G.preference2.getBoolean("KEY_FAV", false)){
imageView1.setImageResource(R.drawable.fav_act_on);
}else{
imageView1.setImageResource(R.drawable.fav_act);
}
قسمت دوم
خوب میریم سراغ اکتیویتی (2) که قرار لیست برگزیده ها رو نشون بده اینو بگم که شما به چند صورت میتونین اکتیویتی هایی که به علاقه مندی اضافه کردین رو تو لیست برگزیده ها نمایش بدین راحترینش که من الان میگم احتمالا و شاید حتما ایراداتی بهش وارده که خودتون ممکنه پیدا و حلش کنین واما کد صفحه ای که قراره علاقه مندی رو نمایش بده من توی اکتیویتی (2) من تو لای ایکس ام ال این صفحه یک textview گذاشتم که با شرایط خاصی setText وبا شرایطی null میشه به اینصورت
boolean res;
TextView txt;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.showFav);
res = G.preference3.getBoolean("VAL", false);
if(!res){
if(G.preference2.getBoolean("KEY_FAV", false)){
txt.setText("(موضوع یا سر فصل اکتیویتی (1)");
}
}
بولین res برای این هست که هر بار اکتیویتی (2) (که قرار لیست برگزیده هارو نشون بده ) اجرا میشه خود به خود چیزی رو اضافه نکنه اگه بولین نباشه هر بار که اکتیویتی 2 اجرا میشه خود بخود TEXTVIEW رو SETTEXT میکنه بعدش مقدار Shared Perference گرفتیم گفتیم اگه true بود یعنی عکس ستاره روشن بود این textview رو settext کن با موضوع اون کتیویتی موضوع رو میتونید دستی وارد کنید یا از Intent ها استفاده کنید در ضمن راه دیگه این که از ListView استفاده کنید برای نمایش علاقه ها
اگه شرط درست نباشه یعنی مقدار shared perference منفی یا false باشه خود به خود با اجرا اکتیویتی 2 textView خالی میشه
التماس دعا
سلام از کد شما استفاده کردم . همه چیز در ابتدا خوب بود تا اینکه سعی کردم با ایجاد یک کلید اکتیویتی دوم (یا همون صفحه علاقه مندی ها ) رو باز کنم . با زدن روشن کردن img_fav درست کار میکنه ولی با زدن دکمه gofav چیزی نمایش داده نمیشه!!!! اینم لینکه سوالم که گذاشتم توی سایت:
لینک
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .