第一个例子:demo1 
Main—>SecondActivity—>Main 
从流程上看就是从Main跳转到SecondActivity,再从SecondActivity返回到Main。也就是将子Activity的数据返回给父Activity。 
代码如下:

Java代码                          

  1. public class Main extends Activity {
  2. private Button btn;
  3. private TextView request_text;
  4. private final int FIRST_REQUEST_CODE = 1;
  5. /** Called when the activity is first created. */
  6. @Override
  7. public void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.main);
  10. request_text = (TextView)this.findViewById(R.id.request_text);
  11. btn = (Button)this.findViewById(R.id.btn);
  12. btn.setOnClickListener(new OnClickListener() {
  13. public void onClick(View v) {
  14. Intent i = new Intent(Main.this,SecondActivity.class);
  15. i.putExtra("request_text_for_main", "从Main传递到SecondActivity");
  16. startActivityForResult(i, FIRST_REQUEST_CODE);
  17. }
  18. });
  19. }
  20. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  21. super.onActivityResult(requestCode, resultCode, data);
  22. if(requestCode==FIRST_REQUEST_CODE && resultCode==Activity.RESULT_OK){
  23. if(data != null) {
  24. request_text.setText(data.getStringExtra("request"));
  25. }
  26. }
  27. }
  28. }

Java代码  

  1. public class SecondActivity extends Activity{
  2. private TextView request_text;
  3. private Button btn;
  4. private String text;
  5. public void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.second);
  8. request_text = (TextView)this.findViewById(R.id.request_text);
  9. if (getIntent().getStringExtra("request_text_for_main") != null) {
  10. text = getIntent().getStringExtra("request_text_for_main");
  11. request_text.setText(text);
  12. }
  13. btn = (Button)this.findViewById(R.id.btn);
  14. btn.setOnClickListener(new OnClickListener() {
  15. public void onClick(View v) {
  16. Intent i = new Intent();
  17. i.putExtra("request",text+"\n"+"从SecondActivity传递到ThirdActivity");
  18. setResult(Activity.RESULT_OK,i);
  19. finish();
  20. }
  21. });
  22. }
  23. }

图一

图一所示是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。 
代码如下:

Java代码  

  1. public class Main extends Activity {
  2. private Button btn;
  3. private TextView request_text;
  4. private final int FIRST_REQUEST_CODE = 1;
  5. /** Called when the activity is first created. */
  6. @Override
  7. public void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.main);
  10. request_text = (TextView)this.findViewById(R.id.request_text);
  11. btn = (Button)this.findViewById(R.id.btn);
  12. btn.setOnClickListener(new OnClickListener() {
  13. public void onClick(View v) {
  14. Intent i = new Intent(Main.this,SecondActivity.class);
  15. i.putExtra("request_text_for_main", "从Main传递到SecondActivity");
  16. startActivityForResult(i, FIRST_REQUEST_CODE);
  17. }
  18. });
  19. }
  20. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  21. super.onActivityResult(requestCode, resultCode, data);
  22. if(requestCode==FIRST_REQUEST_CODE && resultCode==Activity.RESULT_FIRST_USER){
  23. if(data != null) {
  24. request_text.setText(data.getStringExtra("request_text_for_third"));
  25. }
  26. }
  27. }
  28. }

Java代码  

  1. public class SecondActivity extends Activity{
  2. private TextView request_text;
  3. private Button btn;
  4. private final int SECOND_REQUEST_CODE = 2;
  5. private String text;
  6. public void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.second);
  9. request_text = (TextView)this.findViewById(R.id.request_text);
  10. if (getIntent().getStringExtra("request_text_for_main") != null) {
  11. text = getIntent().getStringExtra("request_text_for_main");
  12. request_text.setText(text);
  13. }
  14. btn = (Button)this.findViewById(R.id.btn);
  15. btn.setOnClickListener(new OnClickListener() {
  16. public void onClick(View v) {
  17. Intent i = new Intent(SecondActivity.this,ThirdActivity.class);
  18. i.putExtra("request_text_for_second", text+"\n"+"从SecondActivity传递到ThirdActivity");
  19. startActivityForResult(i, SECOND_REQUEST_CODE);
  20. }
  21. });
  22. }
  23. @Override
  24. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  25. super.onActivityResult(requestCode, resultCode, data);
  26. if(requestCode==SECOND_REQUEST_CODE && data != null){
  27. setResult(Activity.RESULT_FIRST_USER, data);
  28. finish();
  29. }
  30. }
  31. }

Java代码  

  1. public class ThirdActivity extends Activity{
  2. private TextView request_text;
  3. private Button btn;
  4. private String text;
  5. public void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.third);
  8. text = getIntent().getStringExtra("request_text_for_second");
  9. request_text = (TextView)this.findViewById(R.id.request_text);
  10. request_text.setText(text);
  11. btn = (Button)this.findViewById(R.id.btn);
  12. btn.setOnClickListener(new OnClickListener() {
  13. public void onClick(View v) {
  14. Intent i = new Intent();
  15. i.putExtra("request_text_for_third", text+"\n"+"从ThirdActivity再次传递到Main");
  16. setResult(Activity.RESULT_FIRST_USER, i);
  17. finish();
  18. }
  19. });
  20. }
  21. }

这个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实现的。 
代码如下:

Java代码  

  1. public class Main extends Activity {
  2. private Button btn;
  3. private TextView request_text;
  4. private final int FIRST_REQUEST_CODE = 1;
  5. /** Called when the activity is first created. */
  6. @Override
  7. public void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.main);
  10. request_text = (TextView)this.findViewById(R.id.request_text);
  11. btn = (Button)this.findViewById(R.id.btn);
  12. btn.setOnClickListener(new OnClickListener() {
  13. public void onClick(View v) {
  14. Intent i = new Intent(Main.this,SecondActivity.class);
  15. i.putExtra("request_text_for_main", "从Main传递到SecondActivity");
  16. startActivityForResult(i, FIRST_REQUEST_CODE);
  17. }
  18. });
  19. }
  20. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  21. super.onActivityResult(requestCode, resultCode, data);
  22. if(requestCode==FIRST_REQUEST_CODE && resultCode==Activity.RESULT_FIRST_USER){
  23. if(data != null) {
  24. request_text.setText(data.getStringExtra("final_request"));
  25. }
  26. }
  27. }
  28. }

Java代码  

  1. public class SecondActivity extends Activity{
  2. private TextView request_text;
  3. private Button btn,finalBtn;
  4. private final int SECOND_REQUEST_CODE = 2;
  5. private String text;
  6. public void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.second);
  9. request_text = (TextView)this.findViewById(R.id.request_text);
  10. if (getIntent().getStringExtra("request_text_for_main") != null) {
  11. text = getIntent().getStringExtra("request_text_for_main");
  12. request_text.setText(text);
  13. }
  14. btn = (Button)this.findViewById(R.id.btn);
  15. btn.setOnClickListener(new OnClickListener() {
  16. public void onClick(View v) {
  17. Intent i = new Intent(SecondActivity.this,ThirdActivity.class);
  18. i.putExtra("request_text_for_second", text+"\n"+"从SecondActivity传递到ThirdActivity");
  19. startActivityForResult(i, SECOND_REQUEST_CODE);
  20. }
  21. });
  22. finalBtn = (Button)this.findViewById(R.id.finalBtn);
  23. finalBtn.setOnClickListener(new OnClickListener() {
  24. public void onClick(View v) {
  25. Intent i = new Intent();
  26. i.putExtra("final_request", text+"\n"+"从SecondActivity最后传递到Main");
  27. setResult(Activity.RESULT_FIRST_USER,i);
  28. finish();
  29. }
  30. });
  31. }
  32. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  33. super.onActivityResult(requestCode, resultCode, data);
  34. if(requestCode==SECOND_REQUEST_CODE && resultCode==Activity.RESULT_OK){
  35. if(data != null) {
  36. text = data.getStringExtra("request_text_for_third");
  37. request_text.setText(text);
  38. }
  39. }
  40. }
  41. }

Java代码  

  1. public class ThirdActivity extends Activity{
  2. private TextView request_text;
  3. private Button btn;
  4. private String text;
  5. public void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.third);
  8. text = getIntent().getStringExtra("request_text_for_second");
  9. request_text = (TextView)this.findViewById(R.id.request_text);
  10. request_text.setText(text);
  11. btn = (Button)this.findViewById(R.id.btn);
  12. btn.setOnClickListener(new OnClickListener() {
  13. public void onClick(View v) {
  14. Intent i = new Intent();
  15. i.putExtra("request_text_for_third", text+"\n"+"从ThirdActivity再次传递到SecondActivity");
  16. setResult(Activity.RESULT_OK, i);
  17. finish();
  18. }
  19. });
  20. }
  21. }

比起前一个demo2其实没有更复杂之处,只是从ThirdActivity跳转回SecondActivity,而通过SecondActivity的另一个Button来跳转回Main的。

多个Activity跳转的小结的更多相关文章

  1. 用Dart&Henson玩转Activity跳转

    用Dart&Henson玩转Activity跳转 Extra是Android标准的组件之间(Activity/Fragment/Service等)传递数据的方式.本文介绍了开源项目Dart的使 ...

  2. Android之Activity跳转

    简述 如果把每个activity看成一个页面的话,那么activity之间的跳转和页面的之间的跳转基本上是一样的.首先需要监听一个事件,当这个事件发生的时候,就进行跳转.html中有个<a sr ...

  3. android activity 跳转传值问题研究

    intent = new Intent(); intent.setClass(LoginActivity.this, RegActivity.class); startActivity(intent) ...

  4. 【原创】Android 从一个Activity跳转到另外一个Activity

    Android四大组件activity使用,实现两个activity之间的跳转 基本流程:创建两个activity-将其中一个activity中组件作为事件源-通过组件事件的处理借助intent对象实 ...

  5. tabhost中activity跳转动画不显示的解决办法

    [1]如果是tabhost中的activity跳到其他的activity,用这篇blog的方法即可 http://blog.sina.com.cn/s/blog_8db8914301010t31.ht ...

  6. android 15 activity跳转

    从一个屏幕跳到另一个屏幕,一个activity跳转到另一个activity,Intent类用于组件之间传递数据和跳转,组件包括不仅activity. package com.sxt.day04_01; ...

  7. Android Activity跳转动画,让你的APP瞬间绚丽起来

    我们都知道绚丽的APP总会给用户耳目一新的感觉,为了抓住用户更大网络公司使出浑身解数让自己的产品更绚丽,而绚丽最简单的效果就是Activity跳转效果,不仅可以让用户看起来舒服,而且实现起来也特别简单 ...

  8. Activity跳转时传递Bitmap对象的实现

    前言 相信大家可能都了解Activity跳转时我们是能够传递參数的,比方使用Intent传递或者Bundle来传递,把当前Activity的一些信息传递给将要跳转到的新的Activity.可是不知道大 ...

  9. Android的Activity跳转动画各种效果整理

    Android的Activity跳转就是很生硬的切换界面.其实Android的Activity跳转可以设置各种动画,本文整理了一些,还有很多动画效果,就要靠我们发挥自己的想象力 大家使用Android ...

随机推荐

  1. 机器学习基础系列--先验概率 后验概率 似然函数 最大似然估计(MLE) 最大后验概率(MAE) 以及贝叶斯公式的理解

    目录 机器学习基础 1. 概率和统计 2. 先验概率(由历史求因) 3. 后验概率(知果求因) 4. 似然函数(由因求果) 5. 有趣的野史--贝叶斯和似然之争-最大似然概率(MLE)-最大后验概率( ...

  2. PAT A1114 Family Property

    用并查集处理每个家庭的信息,注意标记~ #include<bits/stdc++.h> using namespace std; ; bool visit[maxn]={false}; i ...

  3. day5-2正则表达式

    正则表达式: 正则表达式对象的创建 1,构造函数 var pattern =new RegExp("正则表达式","修饰符") var pattern =new ...

  4. Qt5.5 使用smtp发邮件的各种坑

    本人刚开始学习C++,用的是Qt5.5的IED,经过了两天的学习和查找资料,终于成功发了第一封邮件.以163邮箱为例,简单总结一下. 1.设置邮箱 这一步比较关键,要开通smtp服务,在开通的过程中会 ...

  5. 对象和Map转化gongju

    package czc.superzig.modular.utils; import java.lang.reflect.Field; import java.util.HashMap; import ...

  6. 孤荷凌寒自学python第103天认识区块链017

    [主要内容] 今天继续分析从github上获取的开源代码怎么实现简单区块链的入门知识,共用时间25分钟. (此外整理作笔记花费了约34分钟) 详细学习过程见文末学习过程屏幕录像. 今天所作的工作是进一 ...

  7. Centos7 更新配置为阿里源步骤

    一.yum更换配置源过程 1.备份原有的.repo源文件 首先需要将之前的源进行备份(一般重要的配置文件都需要有备份的意识) # 进入源配置目录 cd /etc/yum.repos.d # 创建备份文 ...

  8. 集合set() 二

    集合分类    可变集合set() 可以添加和删除元素,非可哈希的(值set之后的整体),不能用作字典的键,也不能做其它集合的元素. set()  之后变为不可哈希的 不可变集合 frozenset( ...

  9. thinkPHP5.0中使用header跳转没作用

    我在controller中的方法中这样写: header("Location:".$url); 但是一直没动静,不会跳转,最后还是官方文档解决了 https://www.kancl ...

  10. Mp3下载