gpt4 book ai didi

android - FragmentPagerAdapter - 当用户转到新标签时如何检测滑动或标签点击?

转载 作者:IT王子 更新时间:2023-10-28 23:36:18 24 4
gpt4 key购买 nike

我有一个 MainActivityFragmentPagerAdapter 中有三个 fragment ,如下所示。如何通过滑动或单击选项卡来了解用户何时从第一个 fragment 转到第二个 fragment 或从第二个 fragment 转到第三个 fragment ?我看到 getItem() 方法并不总是像我声明的那样被调用 mViewPager.setOffscreenPageLimit(2);

public class MainThreeTabAdapter extends FragmentPagerAdapter {

private final String[] CONTENT = new String[]{"News", "Rewards", "Me"};

public MainThreeTabAdapter(FragmentManager fm) {
super(fm);
}

@Override
public Fragment getItem(int position) {
if (position == 0) {
return NewsFragment.newInstance();
} else if (position == 1) {
return RewardsFragment.newInstance();
} else if (position == 2) {
return MeFragment.newInstance(true, App.getAccountData().getId());
} else {
return null;
}

}

@Override
public CharSequence getPageTitle(int position) {
return CONTENT[position % CONTENT.length];
}

@Override
public int getCount() {
return CONTENT.length;
}
}

在MainActivity的onCreate()

    mainThreeTabAdapter = new MainThreeTabAdapter(getFragmentManager());

// Set up the ViewPager with the sections adapter.
// this ensures that 2 tabs on each side of current are kept in memory, which is all we need for our case. Default = 1
// this is all taken from the Quickreturn facebook sample app
mViewPager.setOffscreenPageLimit(2);
mViewPager.setAdapter(mainThreeTabAdapter);

最佳答案

getItem() 方法仅在创建 View 时调用。要了解为什么没有调用 getItem(),了解 ViewPager 的默认行为会有所帮助。默认情况下,当您在 ViewPager 的特定页面上时,它还会创建该特定页面之前和之后的页面。如果您要以 [a,b,c] 的顺序命名 3 个 fragment ,并且您在页面 b 上,由于 ViewPager fragment 的默认行为,a 和 c 已经通过调用 创建获取项目(int)。因为已经创建了 fragment ,所以您不会再次调用 getItem()

除此之外:可以使用 ViewPager.setOffScreenLimit() 修改此行为

为了在用户切换页面时收到通知,您真正想要做的是设置 OnPageChangeListener ViewPager 使用 ViewPager.addOnPageChangeListener()选择页面时收到通知。

关于android - FragmentPagerAdapter - 当用户转到新标签时如何检测滑动或标签点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28003788/

24 4 0