两个activity合并为一个,两个画面同时保留,出现的setContentView切换问题

2014年08月27日 Android 5条评论 阅读6670次
两个activity合并为一个,两个画面同时保留,出现的setContentView切换问题

Android应用中有下面这个一个场景:
两个画面其中之一是摄像头提供拍照的画面(称为画面1),
另一个画面是拍照后处理图片的画面(称为画面2)。
画面1中,有个camera的surfaceView,是通过setContentView显示的,另外还有三个按钮Button1,Button2,Button3是通过addContentView添加进去的。
画面2中,所有的布局写到了res/layout下的布局文件中。

本来画面1和2是两个独立的Activity,画面切换是没问题的,但现在因种种原因,需要把这两个Activity合并为一个,之前两个画面所有的初始化都放到画面1的onCreate中。
所有逻辑处理上的合并是没有什么问题的,但就在画面切换显示时,出了点问题。
具体做法是这样的:我的做法是当画面1要切换到画面2时,我把原来画面1的surfaceView和Button1,Button2,Button3全都变为了非可见,同时调用setContentView来加载了画面2布局文件的Layout对象;
当画面2要切换到画面1时,相当于原来的back键按下,执行的操作时,把画面2上的布局Layout对象设置为不可见,设置画面1的surfaceView、Button1、Button2、Button3可见,再次调用画面1的setContentView(surfaceView)。

出现的问题是画面1到画面2,完全正常,但画面2回到画面1时,摄像头的画面是出来的,但Button1、Button2、Button3却没有显示出来。

看见Button1、Button2、Button3三个按钮没显示出来,最初想到的原因或许是Button1、Button2、Button3三个按钮被置于底层了,所以调用了bringtoFront(),并没有解决问题。
如果想让Button1、Button2、Button3三个按钮出来,想到了再次调用之前用的addContentView方法,此方法的结果是因为初始化界面时已经add过这个View了,所有再次add回报出异常的。

问题的情况大体就是上面这样。下面给出最终的解决方法。
1.增加一个根布局对象,这里使用帧布局FrameLayout
2.Activit的onCreate中,setContentView(FrameLayout)
3.画面1中,向FrameLayout中增加View,也就是surfaceView、Button1、Button2、Button3,都放到FrameLayout中
4.画面1切换到画面2时,调用FrameLayout的removeAllViews()方法,同时把画面2的布局对象通过addview的形式添加到FrameLayout中
5.画面2切换到画面1时,同样调用FrameLayout的removeAllViews()方法,同时把画面1的布局对象通过addview的形式添加到FrameLayout中

到此,问题解决,结束。
PS:最近太忙了,以致于每天要加到八九点才能完成工作,所以近期没有更新文章啊。
分享本文至:

WRITTEN BY

avatar
本文标签:androidsetContentView
看了本文是不是觉得很赞,那就赶紧点击下面按钮分享给身边的朋友吧!

5 条评论

  1. avatar 杰成竞价培训

    目前国内90%以上的竞价账户都是处于无人监管的状态,而在美国,所有的企业对sem(竞价)都非常的重视,都有专业的技术人才管理优化,中国对这方面的人才需求非常大,参加"杰成竞价培训",拿高工资或创业赚钱。

  2. avatar 佛山淋浴房

    支持博主分享  [F4]

  3. avatar 胶粘剂

    支持博主分享 [F4]

  4. avatar 三利达大黑鹰

    顶 谢谢博主分享

  5. avatar 上海小额贷款

    我还以为是说的是iPhone的activity插件 原来是安卓的.

欢迎留言




用户登录

sitemap