Alternative for the onResume() during Fragment switching

后端 未结 6 1582
没有蜡笔的小新
没有蜡笔的小新 2020-12-02 13:25

onResume() method won\'t get called when we switch between fragments more than one time. So, is there any better way to handle resume operation?

6条回答
  •  暖寄归人
    2020-12-02 14:12

    You can simply simulate onResume() for each fragment by using an interface!!!

    1- create an interface named FragmentLifecycle , the code is as follows:

    public interface FragmentLifecycle {
       public void onResumeFragment();
    }
    

    2- Let each Fragment implement the interface:

    public class FragmentOne extends Fragment implements FragmentLifecycle
    

    3- Implement interface methods in each fragment:

    @Override
    public void onResumeFragment() {
      Log.i(TAG, "onResumeFragment()");
      Toast.makeText(getActivity(), "onResumeFragment():" + TAG,Toast.LENGTH_SHORT).show(); 
    }
    

    4- Call interface methods on ViewPager page change:

    viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
    
                FragmentLifecycle fragmentToShow = (FragmentLifecycle)adapter.getItem(position);
                fragmentToShow.onResumeFragment();
            }
        });
    

    Enjoy!

提交回复
热议问题