gpt4 book ai didi

带有多个 Fragment 类的 Android ViewPager 每个带有单独的布局文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:33 24 4
gpt4 key购买 nike

我的应用使用 android.support.v4.view.ViewPager 类。对于 ViewPager 中的每一页,我希望有一个 fragment ,每个 fragment 都有自己的布局文件。每个 fragment 都在其自己的文件中定义。我很难实现这个。澄清一下,有:

1个ViewPager
4 个 fragment 文件 - FragmentOne.class、FragmentTwo.class、FragmentThree.class、FragmentFour.class
4 个 XML 布局文件 - frag_one.xml、frag_two.xml、frag_three.xml、frag_four.xml

我看到的例子只处理一个布局文件。

这是我的 FragmentActivity,其中包含 ViewPager:

public class Main extends FragmentActivity {
MyAdapter mAdapter;
ViewPager mPager;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

mAdapter = new MyAdapter(getSupportFragmentManager());

mPager = (ViewPager) findViewById(R.id.pager);
mPager.setAdapter(mAdapter);

}

public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}

@Override
public int getCount() {
return 4;
}

@Override
public Fragment getItem(int position) {
return EditorFragment.newInstance(position);
}
}

}

我的主要问题是:如何让适配器 MyAdapter 识别四个独立的 Fragment 文件并使用 ViewPager 顺利地在它们之间分页?我应该对 getItem() 做什么样的修改?

感谢任何帮助。

编辑:

所以,我尝试了 lulumeya 的建议并得出了这个结论:

编辑 2:是的,那些 break 语句修复了它。现在可以了。感谢所有帮助过的人!现在我有一个很好的隔离,谢谢。

    @Override
public Fragment getItem(int position) {
Fragment f = new Fragment();

switch (position) {
case 0:
f = FragmentOne.newInstance(position);
break;
case 1:
f = FragmentTwo.newInstance(position);
break;
case 2:
f = FragmentThree.newInstance(position);
break;
case 3:
f = FragmentFour.newInstance(position);
break;
}

return f;
}

应用程序启动,这始终是一个好兆头,但卡在布局四上。当我向右翻页时,所有页面也是布局四。我确定要为每个 Fragment 更改 inflater 中的布局。我仍将继续努力。 @lulumeya - 这是你的意思吗?

最佳答案

只需按位置在 getItem(int position) 中返回正确的 Fragment 实例。使用 switch~case,很简单。

关于带有多个 Fragment 类的 Android ViewPager 每个带有单独的布局文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9146232/

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