gpt4 book ai didi

android - ViewPager + FragmentStatePagerAdapter 未按预期工作

转载 作者:太空狗 更新时间:2023-10-29 16:00:14 25 4
gpt4 key购买 nike

有很多类似的问题,但没有一个能解决我的问题。

我的应用程序中有嵌套的 ViewPagerFragmentStatePagerAdapter

详细地说,创建了第一个 ViewPager(支持 4 个 fragment 适配器),第一个 fragment 包含其他 3 个 fragment 。

我的问题是,根据某些事件,中间的 Fragment 根本没有显示。

一旦应用程序启动,一切都会按预期运行并正确显示。

如果我在父 ViewPager 上切换页面,行为会因页面而异:如果我从第一个(包含嵌套的 ViewPager)转到第二个,然后再回到第一个,一切仍然按预期工作;如果我转到任何其他页面然后返回到第一个页面,起初 ViewPager 会完全透明但仍然可以滑动。为了使 View 在屏幕上重绘,我必须从第一页滑动几次到第三页,但无论如何,第二个 fragment 都没有显示。它是完全透明的。

我已经阅读了很多类似的问题,但找不到任何有效的修复方法。我现在很困惑,我已经尝试了一切。

这是我的引用代码:

家长 Activity :

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(...);

mCoordinatorLayout = (CoordinatorLayout) findViewById(R.id.feed_coordinator);
mFloatingActionButton = (FloatingActionButton) findViewById(R.id.feed_floating_upload);
mViewPager = (ViewPager) findViewById(R.id.feed_view_pager);
mTabLayout = (TabLayout) findViewById(R.id.feed_tab_layout);

setupViewPager(); // this sets adapter to viewpager
mTabLayout.setupWithViewPager(mViewPager);
setupTabLayout();

}

private class ParentPagerAdapter extends FragmentStatePagerAdapter {
public ParentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new Frag1();
case 1:
return new Frag2();
case 2:
return new Frag3();
case 3:
return new Frag4();
default:
return new Default();
}
}
@Override
public int getCount() {
return 4;
}
}

Frag1 非常相似:

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

View view = inflater.inflate(R.layout.frag1, container, false);

[...]

mViewPager = (ViewPager) view.findViewById(R.id....);
mLinearLayout = (LinearLayout) view.findViewById(R.id....);

mFragmentAdapter = new MyFragmentAdapter(getFragmentManager());
mViewPager.setAdapter(mFragmentAdapter);
return view;
}

private class MyFragmentAdapter extends FragmentStatePagerAdapter {
private static final int ITEMS = 3;
public MyFragmentAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
new Child1();
case 1:
new Child2();
case 2:
new Child3();
default:
return null;
}
}
@Override
public int getCount() {
return ITEMS;
}
}

这 3 个 child 遵循一个非常简单的实现,他们从服务器获取数据并将它们显示在 RecyclerView 中。如果需要,我也会发布类(class)。

我真的不知道该怎么办,似乎没有任何工作。非常感谢任何形式的帮助,谢谢!

最佳答案

对于嵌套的 Fragment,您必须使用 getChildFragmentManager()

改变这一行:

new MyFragmentAdapter(getFragmentManager());

收件人:

new MyFragmentAdapter(getChildFragmentManager());

关于android - ViewPager + FragmentStatePagerAdapter 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37444617/

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