- 浏览: 159942 次
- 性别:
- 来自: 上海 苏州
最新评论
-
di1984HIT:
血的不错啊,
用HTTP GET调用web service(Java、Groovy两个版本) -
zxw13651485:
学习了!!!
使用基站、wifi实现定位 -
yanruxu801314:
不错,楼主确实有才,可我很奇怪的是,这个app现在还有更新么, ...
豆瓣同城的客户端---豆邻1.0 -
chen052210123:
每次都睡5秒,是不是不太好啊
在线升级Android应用程序完善版 -
zmwell:
楼主啊,我用你上面的程序进行定位,我在西安,却定位到了北京,这 ...
使用基站、wifi实现定位
转载请注明出处
在android开发中Activity相当于web开发的页面,或者说如j2ee开发中对应的jsp页面。在开发jsp时,经常会遇到页面跳转的问题,在android也同样会遇到。以下的几个例子是我对android的Activity跳转的小结,也是最近做项目的小结。
第一个例子:demo1
Main—>SecondActivity—>Main
从流程上看就是从Main跳转到SecondActivity,再从SecondActivity返回到Main。也就是将子Activity的数据返回给父Activity。
代码如下:
图一
图一所示是demo初始化的样子,点击“第一次跳转”进入图二。
图二
图二显示从Main到SecondActivity这个过程,再点击“第二次跳转”即返回Main这个Activity。
图三
图三表示跳转结束,Button按钮上面的文字记录跳转的过程。
这个例子最主要是第一个Activity Main设置的onActivityResult()方法和startActivityForResult()方法。
在Main中通过startActivityForResult()调用SecondActivity,然后在onActivityResult()中获取其返回参数,或者说通过onActivityResult()进行回调。
SecondActivity中要返回第一个Main必须:
setResult(Activity.RESULT_OK,i);
finish();
第二个例子:demo2
Main—>SecondActivity—>ThirdActivity—>Main
这个例子的流程,比上一个更复杂一些,经历了3个Activity,最好跳转回第一个Activity。
代码如下:
这个demo2比起前面的demo1的不同之处在于就是通过ThirdActivity进行跳转到Main。
在代码上的区别是:
(1)Main的onActivityResult()方法中,它的resultCode==Activity.RESULT_FIRST_USER而不是前面的resultCode==Activity.RESULT_OK
(2)SecondActivity中增加了onActivityResult()方法,该方法是用于回调ThirdActivity,并且该方法执行了跳转过程跳转到Main这个Activity。
(3) ThirdActivity和demo1的SecondActivity很类似。
第三个例子:demo3
Main—>SecondActivity—>ThirdActivity—>SecondActivity—>Main
这个过程看起来复杂,其实不然,最后一步是借助SecondActivity的另一个Button实现的。
代码如下:
比起前一个demo2其实没有更复杂之处,只是从ThirdActivity跳转回SecondActivity,而通过SecondActivity的另一个Button来跳转回Main的。
在android开发中Activity相当于web开发的页面,或者说如j2ee开发中对应的jsp页面。在开发jsp时,经常会遇到页面跳转的问题,在android也同样会遇到。以下的几个例子是我对android的Activity跳转的小结,也是最近做项目的小结。
第一个例子:demo1
Main—>SecondActivity—>Main
从流程上看就是从Main跳转到SecondActivity,再从SecondActivity返回到Main。也就是将子Activity的数据返回给父Activity。
代码如下:
public class Main extends Activity { private Button btn; private TextView request_text; private final int FIRST_REQUEST_CODE = 1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); request_text = (TextView)this.findViewById(R.id.request_text); btn = (Button)this.findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent i = new Intent(Main.this,SecondActivity.class); i.putExtra("request_text_for_main", "从Main传递到SecondActivity"); startActivityForResult(i, FIRST_REQUEST_CODE); } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==FIRST_REQUEST_CODE && resultCode==Activity.RESULT_OK){ if(data != null) { request_text.setText(data.getStringExtra("request")); } } } }
public class SecondActivity extends Activity{ private TextView request_text; private Button btn; private String text; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); request_text = (TextView)this.findViewById(R.id.request_text); if (getIntent().getStringExtra("request_text_for_main") != null) { text = getIntent().getStringExtra("request_text_for_main"); request_text.setText(text); } btn = (Button)this.findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent i = new Intent(); i.putExtra("request",text+"\n"+"从SecondActivity传递到ThirdActivity"); setResult(Activity.RESULT_OK,i); finish(); } }); } }
图一
图一所示是demo初始化的样子,点击“第一次跳转”进入图二。
图二
图二显示从Main到SecondActivity这个过程,再点击“第二次跳转”即返回Main这个Activity。
图三
图三表示跳转结束,Button按钮上面的文字记录跳转的过程。
这个例子最主要是第一个Activity Main设置的onActivityResult()方法和startActivityForResult()方法。
在Main中通过startActivityForResult()调用SecondActivity,然后在onActivityResult()中获取其返回参数,或者说通过onActivityResult()进行回调。
SecondActivity中要返回第一个Main必须:
setResult(Activity.RESULT_OK,i);
finish();
第二个例子:demo2
Main—>SecondActivity—>ThirdActivity—>Main
这个例子的流程,比上一个更复杂一些,经历了3个Activity,最好跳转回第一个Activity。
代码如下:
public class Main extends Activity { private Button btn; private TextView request_text; private final int FIRST_REQUEST_CODE = 1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); request_text = (TextView)this.findViewById(R.id.request_text); btn = (Button)this.findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent i = new Intent(Main.this,SecondActivity.class); i.putExtra("request_text_for_main", "从Main传递到SecondActivity"); startActivityForResult(i, FIRST_REQUEST_CODE); } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==FIRST_REQUEST_CODE && resultCode==Activity.RESULT_FIRST_USER){ if(data != null) { request_text.setText(data.getStringExtra("request_text_for_third")); } } } }
public class SecondActivity extends Activity{ private TextView request_text; private Button btn; private final int SECOND_REQUEST_CODE = 2; private String text; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); request_text = (TextView)this.findViewById(R.id.request_text); if (getIntent().getStringExtra("request_text_for_main") != null) { text = getIntent().getStringExtra("request_text_for_main"); request_text.setText(text); } btn = (Button)this.findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent i = new Intent(SecondActivity.this,ThirdActivity.class); i.putExtra("request_text_for_second", text+"\n"+"从SecondActivity传递到ThirdActivity"); startActivityForResult(i, SECOND_REQUEST_CODE); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==SECOND_REQUEST_CODE && data != null){ setResult(Activity.RESULT_FIRST_USER, data); finish(); } } }
public class ThirdActivity extends Activity{ private TextView request_text; private Button btn; private String text; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.third); text = getIntent().getStringExtra("request_text_for_second"); request_text = (TextView)this.findViewById(R.id.request_text); request_text.setText(text); btn = (Button)this.findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent i = new Intent(); i.putExtra("request_text_for_third", text+"\n"+"从ThirdActivity再次传递到Main"); setResult(Activity.RESULT_FIRST_USER, i); finish(); } }); } }
这个demo2比起前面的demo1的不同之处在于就是通过ThirdActivity进行跳转到Main。
在代码上的区别是:
(1)Main的onActivityResult()方法中,它的resultCode==Activity.RESULT_FIRST_USER而不是前面的resultCode==Activity.RESULT_OK
(2)SecondActivity中增加了onActivityResult()方法,该方法是用于回调ThirdActivity,并且该方法执行了跳转过程跳转到Main这个Activity。
(3) ThirdActivity和demo1的SecondActivity很类似。
第三个例子:demo3
Main—>SecondActivity—>ThirdActivity—>SecondActivity—>Main
这个过程看起来复杂,其实不然,最后一步是借助SecondActivity的另一个Button实现的。
代码如下:
public class Main extends Activity { private Button btn; private TextView request_text; private final int FIRST_REQUEST_CODE = 1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); request_text = (TextView)this.findViewById(R.id.request_text); btn = (Button)this.findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent i = new Intent(Main.this,SecondActivity.class); i.putExtra("request_text_for_main", "从Main传递到SecondActivity"); startActivityForResult(i, FIRST_REQUEST_CODE); } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==FIRST_REQUEST_CODE && resultCode==Activity.RESULT_FIRST_USER){ if(data != null) { request_text.setText(data.getStringExtra("final_request")); } } } }
public class SecondActivity extends Activity{ private TextView request_text; private Button btn,finalBtn; private final int SECOND_REQUEST_CODE = 2; private String text; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.second); request_text = (TextView)this.findViewById(R.id.request_text); if (getIntent().getStringExtra("request_text_for_main") != null) { text = getIntent().getStringExtra("request_text_for_main"); request_text.setText(text); } btn = (Button)this.findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent i = new Intent(SecondActivity.this,ThirdActivity.class); i.putExtra("request_text_for_second", text+"\n"+"从SecondActivity传递到ThirdActivity"); startActivityForResult(i, SECOND_REQUEST_CODE); } }); finalBtn = (Button)this.findViewById(R.id.finalBtn); finalBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent i = new Intent(); i.putExtra("final_request", text+"\n"+"从SecondActivity最后传递到Main"); setResult(Activity.RESULT_FIRST_USER,i); finish(); } }); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode==SECOND_REQUEST_CODE && resultCode==Activity.RESULT_OK){ if(data != null) { text = data.getStringExtra("request_text_for_third"); request_text.setText(text); } } } }
public class ThirdActivity extends Activity{ private TextView request_text; private Button btn; private String text; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.third); text = getIntent().getStringExtra("request_text_for_second"); request_text = (TextView)this.findViewById(R.id.request_text); request_text.setText(text); btn = (Button)this.findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent i = new Intent(); i.putExtra("request_text_for_third", text+"\n"+"从ThirdActivity再次传递到SecondActivity"); setResult(Activity.RESULT_OK, i); finish(); } }); } }
比起前一个demo2其实没有更复杂之处,只是从ThirdActivity跳转回SecondActivity,而通过SecondActivity的另一个Button来跳转回Main的。
发表评论
-
豆瓣同城的客户端---豆邻1.0
2011-04-01 15:23 2065豆邻是豆瓣同城的android客户端。具有豆瓣同城的功 ... -
【原创】实现类似街旁网的分享足迹功能
2011-03-06 16:19 3123转载请注明出处 在sina微博上看到街旁网的客户端有 ... -
【原创】时客地图1.7
2011-03-03 00:23 1740时客地图是一款android上的app,目前的最新版本是1.7 ... -
【原创】时客地图1.6
2011-02-12 12:07 1195时客地图是一款android上的app,目前的最新版本是1.6 ... -
【原创】时客地图1.5
2011-01-28 13:18 1195时客地图是一款android上的app,目前的最新版本是1.5 ... -
使用基站、wifi实现定位
2010-11-26 17:28 16918转载请注明出处 android可以借助于gps ... -
关于自适应屏幕方向和大小的一些经验
2010-11-10 13:57 4983转载请注明出处 刚开始,我开发时选取的模拟 ... -
Android隐性Intent的例子
2010-11-02 17:38 7890转载请注明出处 Android的Intent分为两大 ... -
Android 线程超时的例子
2010-11-02 15:09 9271转载请注明出处 android的线程和java的线程是 ... -
在线升级Android应用程序完善版
2010-10-29 16:07 14416转载请注明出处 发一个完善版本的 思路还是原来的思路,上一篇 ... -
在线升级Android应用程序的思路
2010-10-24 23:53 3957转载请注明出处 如果某个app有内嵌的s ... -
通过地名获得经纬度并标识在地图上
2010-10-19 17:30 6031转载请注明出处 主要是调用Geocoder的getFromL ... -
分享一款android的日历组件
2010-10-17 15:28 3839转载请注明出处 这个日历组 ... -
时客1.4
2010-07-03 12:58 1167增加公交线路的详细信息: 1)公交线路的查询 2)公交站点途径 ... -
时客1.3
2010-06-15 22:36 958在1.2版本中增加了地铁的查询功能,在1.3版本中新增了查询打 ... -
刚做的2款应用
2010-06-08 00:05 1143由于刚升级了android的固件到2.1,因此我也将我 ... -
比价器0.1版本
2010-06-01 23:23 1346做了一个比较当当 卓越 china-pub 图书的价格 ... -
时客1.0beta发布
2010-02-28 15:06 988时客,可以查询火车班次、飞机航班 我在G2上 ... -
做了一个可以查询飞机航班、火车班次的小应用
2010-02-14 15:01 3502做得很粗糙,代码量也很少,数据通过调用web service得 ...
相关推荐
在android开发中Activity相当于web开发的页面,或者说如j2ee开发中对应的jsp页面。在开发jsp时,经常会遇到页面跳转的问题,在android也同样会遇到。以下的几个例子是我对android的Activity跳转的小结。
多个Activity跳转的小结,A跳转到B,B跳转到C,C跳转到B,B跳转到A,并且相互之间传递数据。
廖祜秋liaohuqiu_秋百万 的 Android 悬浮窗的小结 睡不着起不来的万先生 的 Android悬浮窗使用TYPE_TOAST的小结 睡不着起不来的万先生 的 Android无需权限显示悬浮窗, 兼谈逆向分析app 文中提到,type 为 ...
11.2.3 华丽转身——实现多页面跳转 11.2.4 始终为用户做好服务——增加Service 11.2.5 细节决定成败——完善应用细节 11.3 成功就在眼前——应用测试和发布 11.3.1只欠东风——应用测试 11.3.2 可以赚钱了——发布...
9.3.1 多个Activity之间数据传递 189 9.3.2 跳转与返回 192 9.3.3 任务与标志 196 9.4 Android系统内置Intent 199 本章小结 201 第10章 数据存储 203 10.1 健康助手案例 203 10.2 Android数据存储概述 205 ...
1.6 本章小结 第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、...
2.4 本章小结 15 第三章 跨域交互缓存处理设计 17 3.1 跨域交互缓存处理需求 17 3.1.1 缓存技术WebStorage 17 3.1.2 跨域交互缓存处理需求 17 3.1.3 页面回退管理需求 17 3.2 缓存处理机制 18 3.2.1 跨域缓存处理 18...
1.6 本章小结 第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、...
1.6 本章小结 6 第2章 工欲善其事 必先利其器——搭建android开发环境 7 2.1 开发android应用前的准备 7 2.1.1 android开发系统要求 7 2.1.2 android软件开发包 7 .2.1.3 其他注意事项 8 2.2 ...
1.6 本章小结 6 第2章 工欲善其事 必先利其器——搭建Android开发环境 7 2.1 开发Android应用前的准备 7 2.1.1 Android开发系统要求 7 2.1.2 Android软件开发包 7 .2.1.3 其他注意事项 8 2.2 ...
1.6 本章小结 第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、...