View Full Version : ذخیره View ها و بازگرداندن آن
slr560
چهارشنبه 15 مرداد 1393, 23:48 عصر
دوستان من به یه مشکل .
تو برنامم Navigation Drawer دارم
توی ۲ تا از آیتم هاش یه Fragment گزاشتم. حالا همین فرگمنت رو یه View Pager داخلش گزاشتم که باز داخل این ویو پیجر ۳تا فرگمنت هست :لبخند:. سخت شد آره ؟؟
بگذریم. چجوری میشه وقتی فرگمنت onPause شد کل صفحه رو ذخیره کرد و وقتی دوباره onResume شد همونو برگردوند؟
یادمه با savedInstateState این کارو میکردیم. یادم نیس چجوری . از دوستان کسی هست کمک کنه؟
akbar8298
پنج شنبه 16 مرداد 1393, 10:07 صبح
موقعیت فرگمنت رو ذخیره کنید و بازیابی کنید
این برای ذخیره کردن
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("curChoice", mCurCheckPosition);
}
این هم برای بازیابی کردن
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
// Restore last state for checked position.
mCurCheckPosition = savedInstanceState.getInt("curChoice", 0);
}
}
slr560
پنج شنبه 16 مرداد 1393, 11:09 صبح
الان به یه نتیجه رسیدم
ببینید موقعی که از نویگیشن مثلا صفحه ۱ رو انتخاب میکنم همه چی درست هست و فرگمنت اول صفحه ۱ onResume میشه . حالا وقتی از نویگیشن میرم به صفحه ۲ ، صفحه ۱ فرگمنت هاش نه onPause میشه و نه onDestroy
مشکل همینه. واسه همین وقتی دوباره از صفحه ۲ به ۱ برمیگردم صفحه سفیده
امیدوارم مفهوم رو رسونده باشم . اینو باید چیکار کنم؟
akbar8298
پنج شنبه 16 مرداد 1393, 14:28 عصر
الان به یه نتیجه رسیدم
ببینید موقعی که از نویگیشن مثلا صفحه ۱ رو انتخاب میکنم همه چی درست هست و فرگمنت اول صفحه ۱ onResume میشه . حالا وقتی از نویگیشن میرم به صفحه ۲ ، صفحه ۱ فرگمنت هاش نه onPause میشه و نه onDestroy
مشکل همینه. واسه همین وقتی دوباره از صفحه ۲ به ۱ برمیگردم صفحه سفیده
امیدوارم مفهوم رو رسونده باشم . اینو باید چیکار کنم؟
فکر می کنم این لینک گویای همه چیز باشه
http://stackoverflow.com/questions/15313598/once-for-all-how-to-correctly-save-instance-state-of-fragments-in-back-stack
slr560
پنج شنبه 16 مرداد 1393, 14:38 عصر
فکر می کنم این لینک گویای همه چیز باشه
http://stackoverflow.com/questions/15313598/once-for-all-how-to-correctly-save-instance-state-of-fragments-in-back-stack
ممنون
حالا یه سوال . اینجا باید این متد Override شده onSavedInstanceState اجرا بشه دیگه درسته؟ که بیاد کل فرگمنت رو بگیره
من این متد override شده رو کجا بنویسم که موقعی که اجرا شد فرگمنت رو بگیره؟؟؟؟
توی onCreate یا onActivityCreated یا onCreateView که نمیشه . چون اینا خودشون override شده هستن. توی onPause هم که نمیشه. چون اصن فراخوانی نمیشه
slr560
پنج شنبه 16 مرداد 1393, 19:32 عصر
باز هم نشد. .....:ناراحت:
slr560
پنج شنبه 16 مرداد 1393, 22:52 عصر
اومدم توی onViewCreated یه شرط گزاشتم گفتم اگه onSaveInstanceState خالی بود بیا متد پایین رو اجرا کن:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = new Fragment();
fragmentManager.putFragment(outState,"otoFragment",fragment);
Log.d("dd", "onSaveInstanceState");
}
ولی خب از آرگومان سوم ایراد میگیره. این آرگون که یه fragment هست میاد و فرگمنت فعلی رو داخلش ذخیره میکنه. فک کنم اشتباه نوشتم
کسی هست کمکم کنه؟
slr560
جمعه 17 مرداد 1393, 02:18 صبح
به یه جاهایی رسیدم
آرگومان های putFragment دقیقا چی هستن؟ به آرگومان آخریش گیر میده.
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.putFragment();
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.