gpt4 book ai didi

Android FragmentStatePagerAdapter

转载 作者:IT老高 更新时间:2023-10-28 23:08:30 27 4
gpt4 key购买 nike

我正在使用 this example 处理 FragmentStatePagerAdapter .

MyAdapter 类实现如下:

public static class MyAdapter extends FragmentStatePagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}

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

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

ListFragment 类包括以下创建新实例的方法:

    /**
* Create a new instance of CountingFragment, providing "num"
* as an argument.
*/
static ArrayListFragment newInstance(int num) {
ArrayListFragment f = new ArrayListFragment();

// Supply num input as an argument.
Bundle args = new Bundle();
args.putInt("num", num);
f.setArguments(args);

return f;
}

当我在我的 Activity 中创建一个新的 fragment 状态寻呼机适配器时,会调用 getItem,然后调用 ListFragment 类中的 newInstance 方法。当我想创建一个新 fragment 时,这很棒。

但我不清楚如何修改 getItem(如果甚至需要)以获取 fragment 对象当它已经存在时和用户页面,例如,第 2 页到第 1 页。我希望我的 Activity 检索现有的、先前创建的 fragment ,以便它可以运行位于 fragment 类中的内部类 AsyncMethod

最佳答案

我认为解决方案比提供的答案要简单得多。

如果您查看 source of FragmentStatePagerAdapter.instantiateItem() ,您会注意到 instantiateItem() 为您处理此逻辑,因此您的 getItem() 实现应始终返回一个新实例。

因此,为了返回现有的 Fragment,只需执行以下操作(假设您从 ViewPager 调用):

Fragment f = (Fragment) getAdapter().instantiateItem(this, getCurrentItem());

关于Android FragmentStatePagerAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10656323/

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