5

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

片段 A

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

我使用带有 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;

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

4

2 回答 2

6

我前段时间也有同样的问题。

创建一个新接口并由您的两个Fragments 实现它:

public interface OnPageSelectedListener {
    void onPageSelected();
}

在父活动中实现android.support.v4.view.ViewPager.OnPageChangeListener和调用Fragment这样的方法:

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

PS:新接口的名称和方法有点混乱,请注意或更改。

于 2013-07-29T16:34:30.403 回答
3

覆盖Fragment.setUserVisibleHintsetUserVisibleHint什么时候true调用你使用的相同逻辑onResume

You can see when FragmentPagerAdapter calls setUserVisibleHint in instantiateItem and setPrimaryItem. Applicable to android since 4.2.1 and support-v4.

于 2016-03-02T14:37:16.440 回答