多个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"));
- }
- }
- }
- }
Java代码
- 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。
代码如下:
Java代码
- 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"));
- }
- }
- }
- }
Java代码
- 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();
- }
- }
- }
Java代码
- 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实现的。
代码如下:
Java代码
- 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"));
- }
- }
- }
- }
Java代码
- 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);
- }
- }
- }
- }
Java代码
- 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的。
多个Activity跳转的小结的更多相关文章
- 用Dart&Henson玩转Activity跳转
用Dart&Henson玩转Activity跳转 Extra是Android标准的组件之间(Activity/Fragment/Service等)传递数据的方式.本文介绍了开源项目Dart的使 ...
- Android之Activity跳转
简述 如果把每个activity看成一个页面的话,那么activity之间的跳转和页面的之间的跳转基本上是一样的.首先需要监听一个事件,当这个事件发生的时候,就进行跳转.html中有个<a sr ...
- android activity 跳转传值问题研究
intent = new Intent(); intent.setClass(LoginActivity.this, RegActivity.class); startActivity(intent) ...
- 【原创】Android 从一个Activity跳转到另外一个Activity
Android四大组件activity使用,实现两个activity之间的跳转 基本流程:创建两个activity-将其中一个activity中组件作为事件源-通过组件事件的处理借助intent对象实 ...
- tabhost中activity跳转动画不显示的解决办法
[1]如果是tabhost中的activity跳到其他的activity,用这篇blog的方法即可 http://blog.sina.com.cn/s/blog_8db8914301010t31.ht ...
- android 15 activity跳转
从一个屏幕跳到另一个屏幕,一个activity跳转到另一个activity,Intent类用于组件之间传递数据和跳转,组件包括不仅activity. package com.sxt.day04_01; ...
- Android Activity跳转动画,让你的APP瞬间绚丽起来
我们都知道绚丽的APP总会给用户耳目一新的感觉,为了抓住用户更大网络公司使出浑身解数让自己的产品更绚丽,而绚丽最简单的效果就是Activity跳转效果,不仅可以让用户看起来舒服,而且实现起来也特别简单 ...
- Activity跳转时传递Bitmap对象的实现
前言 相信大家可能都了解Activity跳转时我们是能够传递參数的,比方使用Intent传递或者Bundle来传递,把当前Activity的一些信息传递给将要跳转到的新的Activity.可是不知道大 ...
- Android的Activity跳转动画各种效果整理
Android的Activity跳转就是很生硬的切换界面.其实Android的Activity跳转可以设置各种动画,本文整理了一些,还有很多动画效果,就要靠我们发挥自己的想象力 大家使用Android ...
随机推荐
- 「题解」「美团 CodeM 资格赛」跳格子
目录 「题解」「美团 CodeM 资格赛」跳格子 题目描述 考场思路 思路分析及正解代码 「题解」「美团 CodeM 资格赛」跳格子 今天真的考自闭了... \(T1\) 花了 \(2h\) 都没有搞 ...
- ubuntu13.10安装增强功能
步骤: 1>cd /mnt 2> ./VBoxLinuxAdditions.run 3>设置共享文件夹share 4>访问共享文件夹cd /media/sf_share not ...
- 14 JavaScript Window对象
Window对象表示一个浏览器窗口或者一个框架. 在客户端JavaScript中,window对象是全局对象,所有的表达式都在当前的环境中计算. Window对象的子对象: JavaScript do ...
- [蓝桥杯2015决赛]穿越雷区(BFS求最短路)
题目描述 X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废.某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?已 ...
- 【剑指Offer面试编程题】题目1361:翻转单词顺序--九度OJ
题目描述: JOBDU最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,&quo ...
- C++ STL之动态数组vector(⽮量)的使⽤
写再最前面:摘录于柳神的笔记: 之前C语⾔⾥⾯⽤ int arr[] 定义数组,它的缺点是数组的⻓度不能随⼼所欲的改变,⽽C++⾥⾯有⼀个能完全替代数组的动态数组 vector (有的书⾥⾯把它翻 ...
- SICP题解
这里用Common Lisp.Haskell等函数式语言. 1.2.请将下面表达式变换为前缀形式: $$ \frac{5 + 4 + (2 - (3 - (6 + \frac{4}{5})))}{3( ...
- Py西游攻关之基础数据类型(三)-元组
Py西游攻关之基础数据类型 - Yuan先生 https://www.cnblogs.com/yuanchenqi/articles/5782764.html 六 tuple(元组) 元组被称为只读列 ...
- 107、Java中String类之判断开头或结尾
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- springMVC的执行请求过程
springMVC的运行流程: 1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器 3.处理器映 ...