在Android中,使用ViewPager2来切换不同的Fragment时,可能会遇到始终显示相同的Fragment的问题。这个问题通常是由于ViewPager2的适配器没有正确设置导致的。以下是解决该问题的步骤和代码示例:
public class ViewPager2Adapter extends FragmentStateAdapter {
private List fragments;
public ViewPager2Adapter(FragmentManager fragmentManager, List fragments) {
super(fragmentManager);
this.fragments = fragments;
}
@Override
public int getItemCount() {
return fragments.size();
}
@NonNull
@Override
public Fragment createFragment(int position) {
return fragments.get(position);
}
}
ViewPager2 viewPager2 = findViewById(R.id.viewPager2);
List fragments = new ArrayList<>();
fragments.add(new Fragment1());
fragments.add(new Fragment2());
fragments.add(new Fragment3());
ViewPager2Adapter adapter = new ViewPager2Adapter(getSupportFragmentManager(), fragments);
viewPager2.setAdapter(adapter);
确保FragmentManager是正确的,如果你正在使用FragmentActivity,则使用getSupportFragmentManager()
,如果你正在使用AppCompatActivity,则使用getSupportFragmentManager()
。
notifyDataSetChanged()
方法。List fragments = new ArrayList<>();
fragments.add(new Fragment1());
fragments.add(new Fragment2());
fragments.add(new Fragment3());
adapter.setFragments(fragments);
adapter.notifyDataSetChanged();
这样,你就可以在ViewPager2中使用不同的Fragment,并且不会遇到始终显示相同的Fragment的问题了。