0

使用ViewPager,我正在开发一个指导,告诉用户如何使用我的应用程序。Viewpager页面具有不同的布局,但片段类相同

这是我当前如何添加/设置页面:

... 
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 
    public ScreenSlidePagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
     case 0: 
      return new Guide_fragment(); 
     case 1: 
      return new Guide_fragment_2(); 

     case 2,3,4 etc. 

     default: 
      return null; 
     } 
    } 
      ... 

但这种方式我要为每个页面片段类,并且因为页面是唯一的图片和文字,我想,它可能没有必要。

有没有一种方法,我可以只为所有页面使用相同的片段类,然后只是分配不同的布局?

感谢

回答

2

有没有一种方法,我可以只使用相同的片段类的所有页面,然后就分配一个不同的布局呢?

当然。将数据传递到片段指示要显示什么,一般是通过工厂模式:

  • 创建静态newInstance()方法,把你通常可能传递给片段构造

  • newInstance()需要这些参数的数据,使他们在Bundle,并通过setArguments()

  • 您的片段重视的Bundle你片段的新构建的实例,当它需要这些数据,来电getArguments()检索Bundle

这可以确保您的数据将生存的配置更改。

+0

太好了。反过来呢?具有多个片段,但所有片段在视图寻呼机内使用相同的布局(案例:所有片段的布局与显示的更改内容相同)?我可以使用相同的布局文件(rootView)的所有片段(正好4)在视图内的寻呼机? –

+1

@SrikarReddy:“我可以使用相同的布局文件” - 当然。我不知道为什么你会有四个片段类,而不是其他的(例如,具有四个不同演示者实现的单个片段类)。但是,一个片段不关心另一个片段使用了哪些资源。 – CommonsWare

+0

对不起,这只是一个片段类。根据参数(从newInstance方法接收的参数),我进行了四次网络调用以接收不同的数据并填充布局。 –

相关问题