片段切换期间替代onResume()

Man*_*ath 29 android onresume android-fragments

onResume()当我们在片段之间切换多次时,不会调用方法.那么,有没有更好的方法来处理恢复操作?

小智 41

代码如下:

步骤1

创建界面:

public interface YourFragmentInterface {
    void fragmentBecameVisible();
}
Run Code Online (Sandbox Code Playgroud)

第2步

在setOnPageChangeListener中附加Listner:

mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(final int position, final float v, final int i2) {
        }

        @Override
        public void onPageSelected(final int position) {
            YourFragmentInterface fragment = (YourFragmentInterface) mPagerAdapter.instantiateItem(mViewPager, position);
            if (fragment != null) {
                fragment.fragmentBecameVisible();
            } 
        }

        @Override
        public void onPageScrollStateChanged(final int position) {
        }
    });
Run Code Online (Sandbox Code Playgroud)

步骤:3

在片段中实现接口:

public class yourActivity extends SherlockFragment implements YourFragmentInterface{
    @Override
    public void fragmentBecameVisible() {
          System.out.println("TestFragment");
    }
}
Run Code Online (Sandbox Code Playgroud)

fragmentBecameVisible()在片段切换期间此方法调用的所有yor片段活动中实现此列表器.

谢谢.


far*_*ran 5

您可以使用接口简单地模拟每个片段的 onResume()!

1-创建一个名为 FragmentLifecycle 的接口,代码如下:

public interface FragmentLifecycle {
   public void onResumeFragment();
}
Run Code Online (Sandbox Code Playgroud)

2-让每个Fragment实现接口:

public class FragmentOne extends Fragment implements FragmentLifecycle
Run Code Online (Sandbox Code Playgroud)

3- 在每个片段中实现接口方法:

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

4-ViewPager页面变化时调用接口方法:

viewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {

            FragmentLifecycle fragmentToShow = (FragmentLifecycle)adapter.getItem(position);
            fragmentToShow.onResumeFragment();
        }
    });
Run Code Online (Sandbox Code Playgroud)

享受!


Man*_*ath 3

我想,我已经找到答案了。onResume()这是每次片段可见时都会强制调用片段的链接。
从返回堆栈恢复的片段