رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
جابه جایی بین فرگمنت ها
#1
داخل فرگمنت اول اطلاعات از سرور دریافت میشه و نمایش داده میشه ...
فرگمنت های بعدی استاتیک هستن ...
وقتی از طریق منو به باقیه فرگمنت ها سر میزنم و دوباره به فرگمنتی که از سرور اطلاعات میگیره بر میگردم چیزی نمایش داده نمیشه ...
ولی باقیه فرگمنت ها که استاتیک هستن به راحتی دوباره اطلاعاتشون رو نمایش میدن ...
چیکار باید انجام بدم که فرگمنت داینامیکم اطلاعات رو نمایش بده ؟
پاسخ
تشکر شده توسط:
#2
باید وضعیت شئ جاری از فرگمنت رو ذخیره کنید. این لینک رو بخونید:
http://stackoverflow.com/questions/15313...back-stack
پاسخ
تشکر شده توسط:
#3
ممنون از پاسختون ادمین جان ... ولی با عرض پوزش چیزی دستگیرم نشد ...
میشه یه توضیح مختصر بدید ؟
تشکر !
پاسخ
تشکر شده توسط:
#4
منظورتون از اینکه چیزی دستگیرتون نشد اینه که توی ترجمه به مشکل برخوردین؟ چون خیلی واضح توضیح داده. اگه مشکلتون توی ترجمه است بفرمایید تا ترجمه‌اش رو بگذارم.
پاسخ
تشکر شده توسط:
#5
بله دقیقا !
پاسخ
تشکر شده توسط:
#6
برای اینکه وضعیت یه فرگمنت رو به‌شکل صحیح ذخیره کنین، باید این کارها رو انجام بدین:

1- توی فرگمنت، وضعیت شئ ایجادشده از اون رو با رونویسی متد onSaveInstanceState ذخیره کنین و توی onActivityCreated بازیابی کنین:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    ...
    if (savedInstanceState != null) {
        //Restore the fragment's state here
    }
}
...
@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    //Save the fragment's state here
}

توضیح: برای ذخیره‌کردن و بازیابی وضعیت میتونین از متغیرهای public static (مثلاً توی کلاس سراسری App یا خود اکتیویتی مربوط به فرگمنت) یا SharedPreferences کمک بگیرین.

2- و قسمت مهم کار اینه که توی خود اکتیویتی هم باید شئ جاری فرگمنت رو توی onSaveInstanceState ذخیره و توی onCreate بازیابی کنین:
public void onCreate(Bundle savedInstanceState) {
    ...
    if (savedInstanceState != null) {
        //Restore the fragment's instance
        mContent = getSupportFragmentManager().getFragment(savedInstanceState, "mContent");
        ...
    }
    ...
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);

    //Save the fragment's instance
    getSupportFragmentManager().putFragment(outState, "mContent", mContent);
}

بجای mContent باید اسم کلید دلخواه رو برای نگهداری شئ فرگمنتتون بگذارین (که البته نیازی به تغییرش هم نیست). از این پارامتر برای نگهداری فرگمنت‌های مختلف با کلیدهای متفاوت استفاده میشه که میتونین توی کدتون باکمک ساختارهای کنترلی مثل if-else یا switch و... اونها رو مدیریت کنین.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 2 مهمان