java – ANDROID:在instantiateItem方法中具有不同片段的ViewPager

前端之家收集整理的这篇文章主要介绍了java – ANDROID:在instantiateItem方法中具有不同片段的ViewPager前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我使用ViewPager创建向左滑动的片段,现在我想在每个片段页面中插入片段.

activityMain.xml

还有这个:
tab0_fragment.xml

我在mainActivity.java中有一个ViewPager

  1. final ViewPager viewPager = (ViewPager) findViewById(R.id.myviewpager);
  2. viewPager.setAdapter(new PagerAdapter() {
  3. ...
  4. ...
  5. }

我尝试通过片段布局在viewpager中打开一个屏幕.

我试试这个:

  1. final ViewPager viewPager = (ViewPager) findViewById(R.id.myviewpager);
  2. viewPager.setAdapter(new PagerAdapter() {
  3. ...
  4. public Object instantiateItem(final ViewGroup container,final int position) {
  5. if (position == 0)
  6. {
  7. final View view = LayoutInflater.from(getBaseContext()).inflate(R.layout.fragment_tab0,null,false);
  8. FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
  9. fragmentTransaction.replace(R.id.myviewpager,new tab0Fragment()).commit();
  10. container.addView(view);
  11. return view;
  12. }
  13. else if (position == 1)
  14. ...
  15. }
  16. ...
  17. }

AND tab0Fragment.java

  1. public class tab0Fragment extends Fragment {
  2. @Nullable
  3. @Override
  4. public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
  5. return inflater.inflate(R.layout.fragment_tab0,null);
  6. }
  7. }

我是机器人中的菜鸟.怎么能纠正这个代码

解:
答案不是我的答案,但这对我帮助很大.

根据@Mr. Rabbit ans @Amit Upadhyay我将顶级代码更改为:

  1. @Override
  2. public Object instantiateItem(final ViewGroup container,final int position) {
  3. if (position == 0)
  4. {
  5. final View view = LayoutInflater.from(getBaseContext()).inflate(R.layout.fragment_tab0,false);
  6. MyAdapter adapter = new MyAdapter(getSupportFragmentManager());
  7. adapter.addFragment(new tab0Fragment(),getResources().getString(R.string.tab0));
  8. container.addView(view);
  9. return view;
  10. }
  11. else if (position == 1)
  12. {

并根据@Mr添加MyAdapter类.兔子的答案.

希望能帮助别人.

最佳答案
尝试将适配器和代码分开.

MyAdapter.java

  1. public class MyAdapter extends FragmentPagerAdapter{
  2. private final List

创建你的碎片

FragmentOne.java

  1. public class FragmentOne extends Fragment {
  2. @Nullable
  3. @Override
  4. public View onCreateView(LayoutInflater inflater,@Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {
  5. View view = inflater.inflate(R.layout.fragment_one,container,false);
  6. return view;
  7. }
  8. }

FragmentTwo.java

  1. public class FragmentTwo extends Fragment {
  2. @Nullable
  3. @Override
  4. public View onCreateView(LayoutInflater inflater,@Nullable Bundle savedInstanceState) {
  5. View view = inflater.inflate(R.layout.fragment_two,false);
  6. return view;
  7. }
  8. }

在您的活动中设置您的viewpager.

  1. final ViewPager viewPager = (ViewPager) findViewById(R.id.myviewpager);
  2. MyAdapter adapter = new MyAdapter(getSupportFragmentManager());
  3. // Add your fragments in adapter.
  4. FragmentOne fragmentOne = new FragmentOne();
  5. adapter.addFragment(fragmentOne,getResources().getString(R.string.fragment_one_title));
  6. FragmentTwo fragmentTwo = new FragmentTwo();
  7. adapter.addFragment(fragmentTwo,getResources().getString(R.string.fragment_two_title));
  8. viewPager.setAdapter(adapter);

然后最后使用ViewPager设置NavigationTabBar.

  1. final NavigationTabBar navigationTabBar = (NavigationTabBar) findViewById(R.id.ntb_horizontal);
  2. navigationTabBar.setViewPager(viewPager,2);

猜你在找的Android相关文章