gpt4 book ai didi

android - 从 ViewPager 中检索 fragment

转载 作者:IT老高 更新时间:2023-10-28 12:51:48 24 4
gpt4 key购买 nike

我使用 ViewPagerFragmentStatePagerAdapter 来托管三个不同的 fragment :

  • [ fragment 1]
  • [ fragment 2]
  • [ fragment 3]

当我想从 FragmentActivity 中的 ViewPager 获取 Fragment1 时。

有什么问题,我该如何解决?

最佳答案

主要答案取决于框架生成的名称。如果这种情况发生变化,那么它将不再起作用。

这个解决方案怎么样,覆盖 Fragment(State)PagerAdapterinstantiateItem()destroyItem():

public class MyPagerAdapter extends FragmentStatePagerAdapter {
SparseArray<Fragment> registeredFragments = new SparseArray<Fragment>();

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

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

@Override
public Fragment getItem(int position) {
return MyFragment.newInstance(...);
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment fragment = (Fragment) super.instantiateItem(container, position);
registeredFragments.put(position, fragment);
return fragment;
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
registeredFragments.remove(position);
super.destroyItem(container, position, object);
}

public Fragment getRegisteredFragment(int position) {
return registeredFragments.get(position);
}
}

在处理可用的 fragment 时,这似乎对我有用。尚未实例化的 fragment ,在调用 getRegisteredFragment 时将返回 null。但我一直在使用它主要是为了从 ViewPager 中获取当前的 Fragment:adapater.getRegisteredFragment(viewPager.getCurrentItem()) 和这不会返回 null

我不知道此解决方案的任何其他缺点。如果有的话,我想知道。

关于android - 从 ViewPager 中检索 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8785221/

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