http://www.cnblogs.com/virusswb/archive/2011/08/02/2124824.html

引言

最近两个星期在研究android的应用开发,学习了android应用开发的基础知识,基本控件,基本布局,基本动画效果,数据存储,http访问internet等等基础知识。

android中有一个概念,叫做activity。什么叫做activity呢?中文译为【活动】。我觉得类比到我们.NET里面的话,就好比是WinForm中的Form窗体,或者是ASP.NET中的Page页面,一个activity可以对应一个窗体或者是页面。

既然是窗体、页面就需要通信,需要传值,需要之间的变换。

WinForm窗体变换和ASP.NET中的Page变换

在WinForm中实现窗体变换,也就是一个窗体转到另外一个窗体,我们会写下面的代码(代码是伪代码,没有经过验证,不保证可以运行,只是为了说明问题)。

From frmChild=new frmChild();

frmChild.show();

或者是frmChild.showDialog();之类的,看你需要的模态还是非模态。如果需要传值的话,可以通过构造函数,或者是public属性,或者是指定parent,在child中使用parent属性访问父窗体,然后访问父窗体的属性。回传值也是类似的过程。网上找一下,有一大堆的示例代码可以参考。我的博客也写过几篇窗体传值的博文。

ASP.NET中页面变换,我们可以用redirect,transfer,execute,传值的话,有session,querystring,application,或者是整个页面也可以。

看了上面的方式,你会发现不管是窗体或者是页面,跳转和传值都比较固定。我说的【固定】是说跳转的发起者和目标,也就是说这两者绑定的比较死,不能胡乱跳转。就好比说,detail1点击之后只能跳转到item1,detail2点击之后只能跳转到item2。当然,等你有经验之后,改良你的代码,实现了item和detail的复用,然后加上一些判断,解决了一些问题。但是好像还是感觉有点绑在一起的意思。

Android中的Activity之间的变换

在Android中,activity之间的跳转代码是这样的。

?
1 2 3 4 Intent intent = new Intent( com.example.UITutorial_V2Activity. this , com.example.sinaweibo.TestActivity. class ); startActivity(intent);

从上面的代码中可以看出来,Intent是com.example.UITutorial_V2Activity和com.example.sinaweibo.TestActivity之间跳转的中介。上面的代码实现了从uitutorial到test的跳转。任何两个activity之间都可以这么跳转,完全没有activity之间的绑定。如果你想传值的话,可以写下面的代码。

?
1 2 3 4 5 6 7 Intent intent = new Intent( com.example.UITutorial_V2Activity. this , com.example.layout.layout2Activity. class ); Bundle bundle = new Bundle(); bundle.putString( "key1" , "value1" ); intent.putExtra( "key1" , bundle); startActivity(intent);

Bundle用来在activity之间传值。回传值是另外的一种方法。反正都不会绑死两个activity。任意两个activity之间的跳转传值,只需要借助intent这个中介就可以了,把目标告诉他, 传值告诉他,他就可以完成。

联想到的

两个窗体变换、传值,可以完全的不绑定,只需要根据窗体变换的约定,交给中介去完成这件事。这么做会给我们带来极大地灵活性,体会提高复用性。也可以扩展开来,两个类之间通信,变换,也可以使用类似的机制,避免绑死两个类,提高独立性。比如说A、B、C两个页面。B页面需要显示单个商品的信息,只需要给他商品ID就可以了,然后B会从后端获取商品的信息来显示。谁都可以呼叫B页面,只要交给中介,然后传值商品ID过来,在B页面的创建过程中,先获取ID,然后从后端获取并显示商品信息,就可以了。在A、C中都可以调用中介来完成到B的跳转,以后加个D也可以跳转到B,不用考虑A、C、D是否存在什么关系。

更多相关文章

  1. Android学习——基础组件
  2. Android得到视频缩略图
  3. Android自动化测试
  4. android 改变bitmap颜色
  5. android 代码中设置字体大小
  6. android中的一个属性动画,可以显示更多的一个案例
  7. android中自定义的一个可以弹出类似于提示更新的对话框
  8. Android中的资源文件
  9. Android(安卓)drawable 三角形

随机推荐

  1. Android开机广播和关机广播
  2. Android(安卓)中 PopupWindow的用法 汇总
  3. 有米Android(安卓)SDK开发者文档
  4. Android(安卓)O(8.0)创建桌面快捷方式
  5. 关于Android中的radioGroup选择
  6. Android重写OnTouchListener实现双击事件
  7. iMX6QD How to Add 24-bit LVDS Support
  8. Android05
  9. Android常用三栏式滑动/滚动视图(View)的
  10. 服务端和Android客户端利用Socket传输JSO