andriod的数据传递方法
在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就回到主界面,或许还同时返回一些子模块完成的数据交给主Activity处理。这样的数据交流就要用到回调函数onActivityResult()。
public class MainActivity extends Activity {
public final int REQUESTCODE_FROM_MAIN_TO_OTHER = 1;
public final int REQUESTCODE_FROM_MAIN_TO_PEPELU = 2; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_start_other = (Button) findViewById(R.id.btn_start_other);
btn_start_other.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, OtherActivity.class);
// 如果REQUESTCODE_MAIN> =0,当Activity结束时requestCode将归还在onActivityResult()中。
//以便确定返回的数据是从哪个Activity中返回
startActivityForResult(intent, REQUESTCODE_FROM_MAIN_TO_OTHER);
}
});
Button btn_start_pepelu = (Button) findViewById(R.id.btn_start_pepelu);
btn_start_pepelu.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, PepeluActivity.class);
startActivityForResult(intent, REQUESTCODE_FROM_MAIN_TO_PEPELU);
}
}); } /**
* requestCode和startActivityForResult中的requestCode相对应
* resultCode和Intent是由子Activity通过其setResult()方法返回
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case REQUESTCODE_FROM_MAIN_TO_OTHER:
if (resultCode == Activity.RESULT_OK) {
Toast.makeText(this, data.getStringExtra("name"), Toast.LENGTH_LONG).show();
Log.i("onactivityresultdemo", data.getStringExtra("name"));
} else {
Log.i("onactivityresultdemo", "i blabalabal");
}
break;
case REQUESTCODE_FROM_MAIN_TO_PEPELU:
if (resultCode == Activity.RESULT_CANCELED) {
Toast.makeText(this, data.getStringExtra("name"), Toast.LENGTH_LONG).show();
Log.i("onactivityresultdemo", data.getStringExtra("name"));
} else {
Log.i("onactivityresultdemo", "i blabalabal");
}
break;
default:
break;
}
}
}
在OtherActivity中设置返回码和返回数据:
public class OtherActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_other); Button btn = (Button) findViewById(R.id.btn_other);
btn.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("name", "cc");
// 设置返回码和返回携带的数据
setResult(Activity.RESULT_OK, intent); }
});
} }
在PepeluActivity中设置返回码和返回数据:
public class PepeluActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_pepelu);
Button btn_pepelu=(Button) findViewById(R.id.btn_pepelu);
btn_pepelu.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
Intent intent=new Intent();
intent.putExtra("name", "pepelu");
setResult(Activity.RESULT_CANCELED,intent);
}
});
}
}
andriod的数据传递方法的更多相关文章
- 解析activity之间数据传递方法的详解
转自:http://www.jb51.net/article/37227.htm 本篇文章是对activity之间数据传递的方法进行了详细的分析介绍,需要的朋友参考下 1 基于消息的通信机制 ...
- activity之间的数据传递方法
1 基于消息的通信机制 Intent--------boudle,extra 用这种简单的形式,一般而言传递一些简单的类型是比较容易的,如int.string等 详细介绍下Intent机制 Inte ...
- MVC中从控制器到视图的数据传递方法汇总
1.ViewData对象概述ViewData是一种字典集合数据,是"视图基类"和"控制器基类"的属性常见用法是在控制器中写入数据,在视图中读取数据ViewDat ...
- Android零基础入门第83节:Activity间数据传递方法汇总
在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,本节一起来学习更多Activity间数据的传递. 一.常用数据类型 在前面几节我们只学习了一些常用类型的数据传 ...
- Unity场景间数据传递方法
在游戏开发中,会常用到场景间传递数据的方法(比如关卡选择,过关后自动回到关卡选择界面,以动画方式解锁下一关),目前研究了三种: 1. 使用DontDestroyOnLoad方法: (1)在场景A中做个 ...
- vue2.0 兄弟组件数据传递方法
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 在Activity之间如何传递数据,请尽可能说出你所知道的传递数据的方法,并详细描述其实现过程。
在Activity之间如何传递数据,请尽可能说出你所知道的传递数据的方法,并详细描述其实现过程. 答案:可以通过Intent对象.静态变量.剪切板和全局对象进行数据传递,具体的数据传递方法如下. 1. ...
- Android 使用剪贴板传递简单数据及复杂数据的方法
传递数据的场景在于不同页面之间跳转,需要携带数据:简单数据值指的是String, int等数据, 复杂数据指的是类 1. 使用剪贴板传递简单数据方法: 第一个页面里面放数据操作如下: Clipbo ...
- ASP.NET MVC3中Controller与View之间的数据传递
在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一. Controller向Vie ...
随机推荐
- Linux系统——ssh-key连接原理
SSH是一种客户端连接,在Linux服务器下通过远程的方式将本地电脑连接到对方的电脑上. 远程连接的方式: (1)telnet命令(为明文传输,不安全) (2)(2)SSH(加密传输,安全) 操作的两 ...
- JPA Spring Data 概述
JPA Spring Data : 致力于减少数据访问层 (DAO) 的开发量. 开发者唯一要做的,就只是声明持久层的接口,其他都交给 Spring Data JPA 来帮你完成! 框架怎么可能代替开 ...
- SQL Server与Oracle对表添加列的不同点
逛了博客园两年有余,不知道该发表些什么.要么觉得自己太菜,要么觉得要发的内容都可以搜索到,发表了还颇有抄袭味道.想想后都不得了之了. 搞了开发快一年了,有时候零零碎碎的东西需要整理一下,梳理后才能做到 ...
- Django RF:学习笔记(8)——快速开始
Django RF:学习笔记(8)——快速开始 安装配置 1.使用Pip安装Django REST Framework: pip install djangorestframework 2.在Sett ...
- idea中使用插件lombok简化java bean的getter/setter/log等常用功能
一.安装. 1. 2. 3. 4. . 二.使用 1. 2. 3. 结果分析,如果没有添加@Setter注解,则LombokTest中的student示例无法使用setAge()等方法.使用lombo ...
- http之请求方法
根据HTTP标准,HTTP请求可以使用多种请求方法.HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法.HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE ...
- Python:执行精确的浮点数运算
需要对浮点数执行精确的计算操作,并且不希望有任何小误差的出现. 浮点数的一个普遍问题是它们并不能精确的表示十进制数.并且,即使是最简单的数学运算也会产生小的误差,比如: >>> a ...
- class文件的结构
任何一个class文件都对应着唯一一个类或接口的定义信息,但反过来说,类或接口的定义信息并不一定都在文件里(比如类或接口也可以通过类加载器直接生成) class文件是一组以8位字节为基础单位的二进制流 ...
- idea tomcat启动乱码问题
配置idea的安装文件的编码: JetBrains\IntelliJ IDEA 2016.3\bin中配置文件idea.exe.vmoptions.idea64.exe.vmoptions 添加 -D ...
- [转]手机web HTML头信息解释和viewport meta标签解释
<meta charset="utf-8" /> <link rel="shortcut icon" href="favicon.i ...