gpt4 book ai didi

Android: ViewPager + Fragments: 修改fragment view when "onPageScrolled"

转载 作者:搜寻专家 更新时间:2023-11-01 08:25:49 26 4
gpt4 key购买 nike

好吧,我认为标题是不言自明的。我的 HomeActivity 中有一个 ViewPager,ViewPager 目前包含 5 个 fragment 。

当通过调用 ViewPager 的 onPageScrolled 可以看到其中一个 fragment 时,我想根据 HomeActiviy 中的某些条件修改当前显示的 fragment 中的一些 View 。

经过一些研究,我似乎找不到在 HomeActivity --> Fragments inside ViewPager 方向上进行通信的好方法。

我已经使用 Interface 轻松解决了 ViewPager 中的 Fragments --> HomeActivity 方向的通信,但这个技巧似乎在另一个方向上不起作用。

我每次都可以使用 FragmentStatePagerAdapter 上的方法访问当前显示的 fragment

public Fragment getActiveFragment(int position){
return myFragmentsList.get(position);
}

但是,通过这样做,我必须将每个 Fragment 转换为它的类 MyFragment1 MyFragment2 MyFragment3 ....

有什么简单干净的方法可以做到这一点?这是代码的相关部分:

   mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

if (currentStatus == 1){
Fragment activeFrag = mPagerAdapter.getActiveFragment(mPager.getCurrentItem());
//here I would like to modify one of the 5 fragments

}
@Override
public void onPageSelected(int position) {}

@Override
public void onPageScrollStateChanged(int state) {}
});

最佳答案

定义一个接口(interface),

interface FragmentListenerInterface {
public void onFragmentSelected();
}

在您的所有 fragment 中实现此接口(interface)。更改 fragment 和 viewpager 之间的通信。编写一个方法来返回 fragmentlistenerinterface 而不是 fragment。

public FragmentListenerInterface getActiveFragment(int position){
return (FragmentListenerInterface) myFragmentsList.get(position);
}

在这之后就说,在你的代码中

public void onPageSelected(int position) {
mViewPager.getActiveFragment(position).onFragmentSelected();
}

并在每个 fragment 中实现 onFragmentSelected()

关于Android: ViewPager + Fragments: 修改fragment view when "onPageScrolled",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45345076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com