ViewPager中怎么获取Fragment

ViewPager中怎么获取Fragment,第1张

Fragment fragement = getSupportFragmentManager() findFragmentByTag("android:switcher:"+RidViewPage+":" + selectTab);

这个Tag可以从FragmentPagerAdapter的源码中找到,如下:

@Override

public Object instantiateItem(ViewGroup container, int position) {

if (mCurTransaction == null) {

mCurTransaction = mFragmentManagerbeginTransaction();

}

// Do we already have this fragment

String name = makeFragmentName(containergetId(), position);

Fragment fragment = mFragmentManagerfindFragmentByTag(name);

if (fragment != null) {

if (DEBUG) Logv(TAG, "Attaching item #" + position + ": f=" + fragment);

mCurTransactionattach(fragment);

} else {

fragment = getItem(position);

if (DEBUG) Logv(TAG, "Adding item #" + position + ": f=" + fragment);

mCurTransactionadd(containergetId(), fragment,

makeFragmentName(containergetId(), position));

}

if (fragment != mCurrentPrimaryItem) {

fragmentsetMenuVisibility(false);

fragmentsetUserVisibleHint(false);

}

return fragment;

使用FragmentPagerAdapter时,难免要在MainActivity 和 当前显示的Fragment间传递数据。但是FragmentPagerAdapter并没有给我们提供类似getCurrentFragment一类的API。

通过FragmentPagerAdapter源码,发现每次Fragment切换都会调用到FragmentPagerAdaptersetPrimaryItem 方法。这个方法里把一个Fragment设置为mCurrentPrimaryItem。 很明显,mCurrentPrimaryItem就是我们想得到的当前Fragment那么我们只需要重载这个方法,把传入的Fragment记录下来即可。

XX

我们可以在Adapter里定义一个currentFragment成员

为viewPager设置setOnPageChangeListener监听器。如viewsetOnPageChangeListener(new GuidePageChangeListener());GuidPageChangeListener 实现接口OnPangeChangeListener。

public class GuidePageChangeListener implements OnPageChangeListener {

@Override

public void onPageScrollStateChanged(int arg0) {

}

@Override

public void onPageScrolled(int arg0, float arg1, int arg2) {

}

@Override

public void onPageSelected(int arg0) {// arg0当前选中页页脚编号

if (arg0 == 0) {// 第一页

} else if (arg0 == 1) {// 第二页

} else if (arg0 == 2) {//第三页

}

}

}

先定位到相应的页卡,比如你有3个页卡分别是View1,View2,View3。

那么你要走在View1中添加就这样写

RelativeLayout insertLayout = (RelativeLayout)View1findViewById(Ridscreen)

View2中就是

RelativeLayout insertLayout = (RelativeLayout)View2findViewById(Ridscreen)

以此类推

以上就是关于ViewPager中怎么获取Fragment全部的内容,包括:ViewPager中怎么获取Fragment、如何获取ViewPager当前的Fragment、怎么获得viewPager当前的页码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9333540.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存