تالار گفتمان nCIS.ir

نسخه‌ی کامل: savedInstanceState (حل شد)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام خسته نباشید روش کار با این متد چطوره؟
من فرگمنت هام رو این جوری فراخونی میکنم:
bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
           public boolean onNavigationItemSelected(@NonNull MenuItem item) {
               switch (item.getItemId()) {
                   case R.id.menu_search:
                       fragment = new SearchFragment();
                       break;
                   case R.id.menu_login:
                       fragment = new LoginFragment();
                       break;
                   case R.id.menu_home:
                       fragment = new HomeFragment();
                       break;
                   case R.id.menu_cat:
                       fragment = new CatFragment();
                       break;
               }
               transaction = fragmentManager.beginTransaction();
               transaction.replace(R.id.main_container, fragment).commit();
               return true;
           }
       });
که توی HomeFragment یه RecyclerView دارم.
تویه کلاس HomeFragment توی متد onCreateView اطلاعات RecyclerView رو از سرور میگیرم و نمایش میدم.
من میخام وقتی فرگمت تغییر داده شد مثلا به CatFragment و وقتی دوباره برگشت به فرگمنت HomeFragment دیگه اطلاعات رو از سرور نگیره همون اطلاعات قبلی رو لود کنه.
من اومدم اطلاعات رو توی کلاس App سیو کردم که باعث شده مصرف رم من زیاد بشه.
اگه راه بهتری هستش لطفا راهنماییم کنید.
با سرچ به یه متد دیگه برخوردم onSaveInstanceState که هر کاری میکنم اجرا نمیشه اصلا!
اگه هدف شما فقط همین موضوعه کافیه که تعداد صفحات fragmentManager رو بیشتر کنین (offScreenPageLimit). مثلاً وقتی روی 1 باشه، توی هر سربرگی باشین یکی قبل و یکی بعدش رو Cache میکنه و از حافظه خارج نمیکنه. حداقل عدد مجاز براش 1 هست ولی میتونین بیشتر بگذارین. مثلاً اگه روی 4 باشه و شما کلاً 5 فرگمنت داشته باشین که با Tab جدا کردین، توی هرکدوم که باشین هیچکدوم از فرگمنتهای دیگه از حافظه خارج نمیشن.
private FragmentManager fragmentManager;
متدی به اسم offScreenPageLimit وجود نداره!
متد نیست. یه اتریبیوته که توی XML باید ست کنید. متدش به اسم setOffScreenPageLimit هست.
با سلام مشکل حل شد.
من از FrameLayout استفاده میکردم برای همین به مشکل خورده بودم چون اینجا ریپلیس میکردم که حالا احتمالا روش های خودشم داره که کش بشه ولی من نتونستم این کار رو انجام بدم اومدم از ViewPager استفاده کردم و خودش کش میکنه.
تشکر از استاد شهرکی.