ViewPager中怎么获取配置文件中Fragment

在之前的博文《》和《》以及《》中我们介绍了ViewPager以及Fragment各自的使用场景以及不同的实现方式

那如果将他们两结合起来,会不会擦出点火花呢答案是肯定的。之前在介绍ViewPager時我们实现了多个ImageView的切换,并配合更新导航原点的状态那我们现在就将之前的imageview替换为fragment,将导航原点替换为更加生动的布局比如我们經常使用的微信(取消了ActionBar):

(1)我们可以通过点击下面的导航按钮选择对应的显示界面(fragment),如下图:

(2)我们也可以通过滑动界面(fragment)来实现界面切换同时下面的导航按钮状态也会发生变化,如下图:

那么重点来了这样的效果要怎么实现呢,大至分为以下的步骤

(1)布局文件中直接部署ViewPager以及下方的导航布局

(2)根据导航的个数来建立对应的fragment布局并建立配套的Fragment类(为方便后期扩展建议建立与导航个數相同的fragments)

(3)drable下使用selector实现导航组件的形态变化

第三步:drable中设定下方导航组件不同的形态

导航组件中文字形态变化只是颜色不同,图片的話需要设置点击前后不同的图片(这里演示一种)

4个fragment对应4个java类这里演示一个,其他三个都一样

代码中详细标注了各个实现步骤的注释,这里不再赘述(为了提高程序运行效率很多重复方法未封装,代码看起来有点臃肿了)

24 //声明导航栏中对应的布局 34 //初始化加载首页布局 36 //調用自定义initListener方法为各个组件添加监听事件 38 //设置默认选择的pager和导航栏的状态 45 //为四大导航组件添加监听 50 //为viewpager添加页面变化的监听以及事件处理 157 * 設置导航栏的点击事件并同步更新对应的ViewPager

后期就微信的其他功能的实现做简单介绍,不早了休息

问题查阅了官方文档,也实现叻官方的例子但实际项目是ViewPager+Fragment,按官方的例

  子总是获取配置文件中不到Fragment的引用,如:

  查询相关资料后终于找到如下解决方案:

  一般来讲,我们再使用viewpager的时候是在代码中动态的添加fragment。此时我们不能去指定

  fragment的id,也不能指定他的tag,如果你一定要去指定tag,运行时會提示,tag已经被指定那么,在动

  态的添加了fragment之后我们如何能获取配置文件中到该fragment并修改其中的内容呢。两种方法:

  第一种方法实际上是一种hack方法并没有官方文档说明支持。代码如下:

我要回帖

更多关于 获取配置文件中 的文章

 

随机推荐