`

ViewPager+TabHost 实现选项卡页面间滑动,组件不能动态更改UI问题的解决!

阅读更多

一、现象:

通过ViewPager+TabHost可以实现点击选项卡滑动,或者通过手势拖动滑动。因为考虑到组件比较多,不能将所有的组件监听响应写在一个类,所以需要既可以在ViewPager中的视图“点击”(以一个按钮为例)响应又能在TabHost中的activity“点击”响应的效果。

很幸运,按钮能响应,但是将按钮组件的监听方法写到onResume方法中的时候,按钮就不能响应了,但是能够打印语句,能加载数据。可以为什么按钮等组件不能更改UI了呢?

 

二、分析:

我在需要滑动的三个activity中的onCreate,onStart,onResume方法中分别打印输出作为判断该方法执行了的方式System.out.println("A onCreate");,,,

结果发现都是ViewPager会将三个Activity的视图添加到自己的队列以便滑动显示,所以一开始三个Activity A B C 都有打印 onCreateonStart然后再是TabHost添加Activity,当显示A的时候A才打印onresume,但是还是没用,因为这个时候显示的视图都是ViewPager中的View


 

 

三、解决:

之前试了很多办法,线程,handler等都没有用。其实像按钮等的监听以及listview等的监听都可以写在oncreate中,需要动态判断显示UI活加载数据的写在onresume中。

解决:将需要动态显示隐藏或要改变值的组件的设置为static,这样ViewPagerTabHost访问的都是同样的属性。

 

四、效果:

 

 

五、源码下载:

http://www.kuaipan.cn/file/id_6460760389584413.htm

  • 描述: resume之后
  • 大小: 23.9 KB
  • 描述: 滑动效果
  • 大小: 21.5 KB
  • 描述: resume之前
  • 大小: 29.3 KB
  • 描述: 创建过程
  • 大小: 5.3 KB
1
1
分享到:
评论
2 楼 flycatdeng 2013-04-28  
jy02411368 写道
你好,请教个问题我下了你的demo 但是发现左右切换的时候只有第一页会更新修改的ui后面几页不管是放在onreumes方法还是怎么样都不会更新ui但却是执行了请问如何解决?搞了好几天了

不是很明白你说的问题,能说详细点么?
1 楼 jy02411368 2013-04-27  
你好,请教个问题我下了你的demo 但是发现左右切换的时候只有第一页会更新修改的ui后面几页不管是放在onreumes方法还是怎么样都不会更新ui但却是执行了请问如何解决?搞了好几天了

相关推荐

Global site tag (gtag.js) - Google Analytics