Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fragment onResume() isn't called when using FragmentPagerAdapter

I need my fragments to always call a certain function when they are the active fragment, so I put it in onResume(), but it isn't being called.

Fragment A

@Override
public  void onResume(){
    super.onResume();
    Log.d("clear state", " "+clear);
    if(clear == true)
    {
        restart();
        clear = false;
        calculate();
    }
}

I use a FragmentPagerAdapter with a ViewPager to switch fragments

public class ScoutingFragSingle extends FragmentPagerAdapter{


@Override
public Fragment getItem(int index) {
    Bundle data = new Bundle();
    switch(index){
    case 0:
        TeamsFragment teamsFragment = new TeamsFragment();
        data.putInt("current_page", index+1);
        teamsFragment.setArguments(data);
        return teamsFragment;
    case 1:

        data.putInt("current_page", index+1);
        data.putInt("matchId", matchNum);
        aFragment.setArguments(data);
        return aFragment;

So how would I make the fragments call their onResume()?

like image 817
rasen58 Avatar asked Mar 17 '13 16:03

rasen58


Video Answer


1 Answers

I had the same problem while ago.

Create a new interface and implement it by both of your Fragments:

public interface OnPageSelectedListener {
    void onPageSelected();
}

In parent activity implement android.support.v4.view.ViewPager.OnPageChangeListener and call Fragment method like this:

@Override
public void onPageSelected(int i) {
    OnPageSelectedListener fragment = (OnPageSelectedListener ((PlaceListPagerAdapter)pager.getAdapter()).getFragment(i);
    fragment.onPageSelected();
}

PS: Name of the new interface and its method is a bit confusing, so be careful or change it.

like image 181
ondrej kosatka Avatar answered Oct 04 '22 01:10

ondrej kosatka