public CityFragmentPagerAdapter(FragmentManager fragmentManager, List<Fragment> fragments) { super(fragmentManager, getLifecycle()); this.fragmentList = fragments; }中getLifecycle爆红怎么改
时间: 2024-02-02 19:02:32 浏览: 22
`getLifecycle()` 是 `FragmentPagerAdapter` 中的一个方法,但是它需要在 `Fragment` 内部调用。在 `CityFragmentPagerAdapter` 中,您可以通过将 `Fragment` 的 `Lifecycle` 对象传递给 `super` 构造函数来解决此问题。因此,您可以将 `getLifecycle()` 替换为 `fragment.getLifecycle()`,如下所示:
```
public CityFragmentPagerAdapter(FragmentManager fragmentManager, List<Fragment> fragments) {
super(fragmentManager, fragments.get(0).getLifecycle());
this.fragmentList = fragments;
}
```
这将使用第一个 `Fragment` 的 `Lifecycle` 对象来初始化 `CityFragmentPagerAdapter`。
相关问题
public class MyPagerAdapter extends FragmentPagerAdapter { private List<Fragment> fragmentList; public MyPagerAdapter(FragmentManager fragmentManager, List<Fragment> fragments) { super(fragmentManager,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); this.fragmentList = fragments; } @NonNull @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } }
这是一个 Java 类的代码示例。其中,MyPagerAdapter 是一个继承自 FragmentPagerAdapter 的类。
在 Android 应用程序中,FragmentPagerAdapter 通常用于实现 ViewPager 中的页面切换功能。ViewPager 可以用于展示多个 Fragment,用户可以通过左右滑动来切换不同的 Fragment 页面。在该类中,MyPagerAdapter 用于管理 Fragment 的集合,以便在 ViewPager 中进行页面切换。
MyPagerAdapter 类中有一个构造方法,用于接收 FragmentManager 和 Fragment 集合。在该构造方法中,调用父类的构造方法,并将 FragmentManager 和 BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT 作为参数传递给父类。BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT 表示仅在当前 Fragment 可见时才执行生命周期方法,以提高性能。同时,将 Fragment 集合保存到 fragmentList 变量中。
MyPagerAdapter 类中有两个方法,getItem 和 getCount。getItem 方法用于根据指定位置获取对应的 Fragment 对象。在该方法中,根据位置从 fragmentList 中获取对应的 Fragment 并返回。getCount 方法用于获取 Fragment 集合的大小,并返回该值。
MyPagerAdapter 类是一个通用的 Adapter 类,可以用于任何需要展示多个 Fragment 的场景。在使用时,只需要将需要展示的 Fragment 添加到 fragmentList 集合中,并将 MyPagerAdapter 对象设置给 ViewPager 即可。
private void changeFragment(int page) { currentPage = page; Fragment fragment = fragments.get(page); FragmentManager supportFragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction(); for (Fragment item : fragments) { fragmentTransaction.hide(item); } if (!fragment.isAdded()) { fragmentTransaction.add(R.id.fcv, fragment).show(fragment); } else { fragmentTransaction.show(fragment); } fragmentTransaction.commitNow(); }
这段代码是什么意思?
该方法是用来切换 Fragment 的。首先,它会根据传入的参数 page 来确定需要切换到哪个 Fragment。然后,它获取该 Fragment 并使用 FragmentManager 来执行 FragmentTransaction。接着,它会遍历所有的 Fragment 并将它们隐藏起来。最后,它会判断当前需要显示的 Fragment 是否已经被添加到 FragmentManager 中。如果没有,就将该 Fragment 添加到 FragmentManager 中并显示出来;否则,直接显示该 Fragment。最后,它会调用 commitNow() 方法来提交事务并立即执行。