gpt4 book ai didi

android - FragmentManager 给我错误的 fragment

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

我正在使用这一行来显示当前 fragment :

Item myFragment = (Item) getSupportFragmentManager().findFragmentById(R.id.pager);

这是我的 ViewPager 的一个例子

| A | B | C | D | E | F |

显示的第一个 fragment 是A,但是myFragment是B当我去 B 时,myFragment = B...当我去 F 时,myFragment = E您可以在此处查看代码:-> TabsActivity.java

有人遇到过这个问题吗?为什么显示的 fragment 和 myFragment 的值之间存在偏移?

谢谢

[编辑]我添加一个 Log()现在这是我的 TabsActivity 的一部分

class TabsAdapter extends FragmentStatePagerAdapter  {

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

@Override
public Fragment getItem(int position) {
Log.e("POSITION", position + "");
return Item.newInstance(CONTENT.get(position % CONTENT.size()));
}

@Override
public CharSequence getPageTitle(int position) {
return CONTENT.get(position % CONTENT.size());
}

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

当我启动我的应用程序时,我的记录器显示:位置 0位置 1

这正常吗?不应该只显示“POSITION 0”吗?当我滑动时,“POSITION 1”?

最佳答案

首先,您要根据 ID 请求 fragment 。 ID R.id.pager 只是一些与 R.id.pager 相关联的随机数。在提供的代码中,您没有为任何 fragment 分配 ID,因此您得到任何东西都是幸运的。

如果您想从 Viewpager 中检索 fragment ,则需要遵循此问题中回答的标准:Update data in ListFragment as part of ViewPager

其次,您获得“POSITION 0 POSITION 1”的原因是因为 ViewPager 检索当前页面 以及它尚未获取的紧邻的任何其他页面有。这意味着它在当前页面、上一页和下一页上调用 getItem()。在位置 0 处,没有上一页,但有下一页。如果您滑过,您将只会看到 POSITION 2,因为 ViewPager 需要创建 POSITION 2 以准备下一次滑动。如果您跳转到第 4 项,您将看到 POSITION 2 POSITION 3 POSITION 4

关于android - FragmentManager 给我错误的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13164196/

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