使用FragmentPagerAdapter时不调用片段onResume()

ras*_*n58 4 android fragment onresume android-viewpager

我需要我的片段在它们是活动片段时总是调用某个函数,所以我将它放在onResume()中,但它没有被调用.

片段A.

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

我使用带有ViewPager的FragmentPagerAdapter来切换片段

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;
Run Code Online (Sandbox Code Playgroud)

那么如何让片段调用它们的onResume()?

ond*_*tka 5

我以前遇到过同样的问题.

创建一个新的界面并由你Fragment的两个实现它:

public interface OnPageSelectedListener {
    void onPageSelected();
}
Run Code Online (Sandbox Code Playgroud)

在父活动实现android.support.v4.view.ViewPager.OnPageChangeListener和调用Fragment方法如下:

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

PS:新接口的名称及其方法有点混乱,所以要小心或更改它.