我有一个用Java写的老项目,它在三个不同的片段之间水平滑动,它们在主活动上被声明。它工作得很完美。
public class MainActivity extends AppCompatActivity {
ViewPager pager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pager = findViewById(R.id.theViewPagerInTheMainActivity);
pager.setOffscreenPageLimit(3);
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager());
Frag_A aFrag = new Frag_A();
adapter.addItem(aFrag);
Frag_B bFrag = new Frag_B();
adapter.addItem(bFrag);
Frag_C cFrag = new Frag_C();
adapter.addItem(cFrag);
pager.setAdapter(adapter);
pager.setCurrentItem(1);
}
class PagerAdapter extends FragmentStatePagerAdapter {
ArrayList<Fragment> items = new ArrayList<Fragment>();
public PagerAdapter(FragmentManager fragManager) {
super(fragManager);
}
public void addItem(Fragment item) {
items.add(item);
}
@Override
public Fragment getItem(int position) {
return items.get(position);
}
@Override
public int getCount() {
return items.size();
}
}
}
每三个不同的片段,后面跟着不同的代码,工作正常,开始:
public class Frag_A extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.frag_a, container, false);
}
}
Frag_B和frag_b布局、Frag_C和frag_c布局也是如此。
我现在又做了一遍,但是是在Kotlin中,使用ViewPager2。我没有以编程方式生成任何片段,我希望将它们的三个ID都写在主Activity上。当然,直接在Android Studio中转换代码并不奏效,而且数小时的搜索也无法满足我的需求。根据我的拙见,从一个预先制作的片段创建不同颜色的片段似乎不太适合我的项目,并且所有片段都以红色下划线结束。是否可以在不导入.v4支持库的情况下创建?
2条答案
按热度按时间wsewodh21#
自己解决了!
93ze6v8z2#
由于FragmentPagerAdapter是分离的,因此我将其切换到FragmentStateAdapter(FragmentActivity fragmentActivity),它可以很好地与ViewPager 2配合使用
我的ViewPagerAdapter:
}
我的活动:
谢谢你的关心!!注意:我使用绑定来替换findViewById