在多个Activity中回传值(startActivityForResult())
业务逻辑:
MainActivity打开A,A打开B,B把值传回MainActivity。适用在多个Activity中回传值。
实例:微信中选择国家-->省份-->城市的实现
实现方式分析:
1.第一个Activity以startActivityForResult(intent,requestCode)方式打开第二个Activity。
2.第二个Activity以startActivityForResult(intent,requestCode)方式打开第三个Activity(注意,此时不要结束第二个Activity,我们需要在onActivityResul(int,int,intent)接收第三个Activity传过来的数据,然后设置结果,传给第一个Acitivity),如果第三个Activity需要第二个Activity数据,在intent中传递给第三个Activity。
3.第三个Activity用getIntent()获得第二个Activity传过来的intent。并将自己需要传递回去的数据放入intent中,然后setResult(),finish()自己,调用第二个Activity的onActivityResul(int,int,intent)方法。
4.在第二个Activity中处理第三个Activity中传回的数据。setResult(),finish()自己,调用第一个Activity的onActivityResul(int,int,intent)方法。
5.第一个Activity的onActivityResul(int,int,intent)方法,可以接收到2个Activity传过来的数据。
代码:
public class MainActivity extends AppCompatActivity { private TextView mText; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mText = (TextView) findViewById(R.id.text);
} public void click(View view) {
Intent intent = new Intent(this,A.class);
startActivityForResult(intent,1);
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String a = data.getStringExtra("A");
String b = data.getStringExtra("B");
mText.setText(a+"+"+b);
}
}
public class A extends AppCompatActivity { private TextView mText;
private String mString; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a);
mText = (TextView) findViewById(R.id.text); mString = mText.getText().toString();
}
public void click(View view) { Intent intent = new Intent(this,B.class); intent.putExtra("A",mString); startActivityForResult(intent,1);
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { setResult(3,data);
finish();
}
}
public class B extends AppCompatActivity {
private TextView mText;
private String mString;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.b);
mText = (TextView) findViewById(R.id.text); mString = mText.getText().toString();
}
public void click(View view) {
Intent intent = getIntent();
intent.putExtra("B",mString);
setResult(2,intent);
finish();
}
}
效果如下:
在多个Activity中回传值(startActivityForResult())的更多相关文章
- Android:通过startActivityForResult方法来得到Activity的回传值
在一些情况下,我们通过 A activity跳转到 B activity上,这时希望 A activtiy能从 B activity上得到一些返回值,这个时候我们就不能使用startActivity方 ...
- Android 组件系列-----Activity的传值和回传值
在这篇随笔里将讲解Activity的传值和回传值. 一.通过startActivity来进行Activity的传值 在Android中,如果我们要通过一个Activity来启动另一个Activity, ...
- asp.net中父子页面通过gridview中的按钮事件进行回传值的问题
这两天写BS程序,遇到父子页面传值的问题,以前没写过web系统,用了几天时间才将问题解决,总结下记录下来: 问题描述: 父页面A中有一个gridview,每行6个列,有5列中均有一个按钮,单击按钮,会 ...
- linux 中 ping的回传值
今天在学习鸟哥私房菜的过程中,不明白ping的回传值是怎么设置的,后来网上找的结果了,特此记录一下 1 题目大意是指,ping一个网段的机器,如果可以通,就显示UP,如果不通就显示Down,其中一 ...
- Android--使用剪切板在Activity中传值
在Activity之间传递数据还可以利用一些技巧,不管windows还是Linux操作系统,都会支持一种叫剪切板的技术,也就是某一个程序将一些数据复制到剪切板上,然后其他的任何程序都可以从剪切板中获取 ...
- 从Activity中返回数据
从Activity中返回数据 一.简介 这里也就是使用intent方式返回数据. 二.具体步骤 在MainActivity通过一个button访问Activity01页面,然后将Activity01页 ...
- Android笔记(二十) Activity中的跳转和值传递
我们知道,一个APP是由若干个Activity组成的,那么各个Acitivity中肯定需要进行跳转以及传递数值以保证App的运行,现总结一下多个Activity之间的跳转和值传递. 显式Intent跳 ...
- demo工程的清单文件及activity中api代码简单示例
第一步注册一个账户,并创建一个应用.获取app ID与 app Key. 第二步下载sdk 第三步新建工程,修改清单文件,导入相关的sdk文件及调用相应的api搞定. 3.1 修改清单文件,主要是加入 ...
- android开发之在activity中控制另一个activity的UI更新
转自:http://blog.csdn.net/jason0539/article/details/18075293 第一种方法: 遇到一个问题,需要在一个activity中控制另一个acitivit ...
随机推荐
- struts2接收参数的5种方法
以下形式中最常用的是前两种 1. 使用Action的属性: 在action 里面定义要接收的参数,并提供相应的setter,getter,和提交参数的名称一致, 并不用做数据类型的转换相应提交方式可以 ...
- Django实现用户注册登录
学习Django中:试着着写一个用户注册登录系统,开始搞事情 =====O(∩_∩)O哈哈~===== ================= Ubuntu python 2.7.12 Django 1. ...
- 【CNMP系列】PHP配置和调优
上一节我们说到PHP5.6.30在CentOS7.0下的整个安装过程,http://www.cnblogs.com/riverdubu/p/6428226.html 今天我来和大家讲解一下PHP-FP ...
- MySQL 修改最大连接数
方法一:进入MySQL安装目录 打开MySQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=1000 服务里重起MySQ ...
- Android学习总结(十二)———— BaseAdapter优化
一.BaseAdapter的基本概念 对于Android程序员来说,BaseAdapter肯定不会陌生,灵活而优雅是BaseAdapter最大的特点.开发者可以通过构造BaseAdapter并搭载到L ...
- Javaweb之Servlet入门
1. 什么是Servlet? Java Servlet 是运行在 Web 服务器或应用服务器上的程序:他是浏览器(HTTP客户端)请求和HTTP服务器上资源(访问数据库)之间的中间层. 2. 什么是S ...
- 10条建议让你创建更好的jQuery插件
在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了.使 ...
- Git基础教程(二)
继续上篇Git基础教程(一),在开篇之前,先回顾一下上篇中的基本命令. 配置命令:git config --global * 版本库初始化:git init 向版本库添加文件:git add * 提交 ...
- beauty
至你我最美的邂逅 年意渐渐消失,一转眼元宵的炮竹将要响起,今天是贰零一七年二月九号,即是元宵节前两天,在这里我写下我这几天的收获. 离元宵节还有四天,我好久都没跟朋友一起认真的玩过,几天我去了我发小的 ...
- .NET获取客户端的操作系统、IP地址、浏览器版本
获取客户端的操作系统: #region 获取操作系统版本号 /// <summary> /// 获取操作系统版本号 /// </summary> /// <returns ...