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 ...
随机推荐
- c/c++值传递和引用传递
今天看数据结构的时候,因为是c语言版的,刚开始学的时候就对指针搞的焦头烂额,今天,发现参数传递的时候,&符号也莫名其妙,搜了一篇好文,转载下来. 一. 函数参数传递机制的基本理论 函数参数传递 ...
- 21. Merge Two Sorted Lists(合并2个有序链表)
21. Merge Two Sorted Lists Merge two sorted linked lists and return it as a new list. The new list s ...
- c# ArrayList 的排序问题!
2009-01-19 20:10 c# ArrayList 的排序问题! c# ArrayList 的排序问题! 我看见网上有人用IComparer接口实现ArrayLIst 的排序问题 ,于是自己写 ...
- python 封装时间常用操作方法-time,datetime
封装脚本: #encoding=utf-8import timefrom datetime import timedelta,date def date_time_chinese(): prin ...
- .Ignite是什么
Ignite是什么 Apache Ignite内存数据组织是高性能的.集成化的以及分布式的内存平台,他可以实时地在大数据集中执行事务和计算,和传统的基于磁盘或者闪存的技术相比,性能有数量级的提升. ...
- 20145309 李昊 《网络攻防》 Exp2 后门原理与实践
实践内容: (1)理解免杀技术原理(1分) (2)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧:(2分) (3)通过组合应用各种技术实现恶意代码免杀( ...
- linux及安全《Linux内核设计与实现》第三章——20135227黄晓妍
第三章 (由于linux不区分进程和线程,所以它们在linux中被称为task,也叫任务) 总结:本章主要包括进程以及线程的概念和定义,Linux内核如何管理每个进程,他们在内核中如何被列举,如何创建 ...
- Java构造函数和this关键字
一. 构造函数 /* 一个函数中定义的变量必须要初始化,否则编译会报错 一个类中的数据成员 1. 如果在定义的时候不初始化,则它的值是系统自动分配好的默认值! 如int型为零 boolean型是fa ...
- Vim提示E325(锁机制)
背景 用vim命令处理一些超大文件时,有时会遇到卡死现象,不得不强制退出.但是,再次用vim命令访问这个文件时,会出现“E325:ATTENTION”提示.如果不做处理,以后每次都会出现. 分析 经过 ...
- Redis哨兵(sentinel)
介绍 Redis的sentinel主要是用来管理多个Redis服务器,sentinel负责(1)监控主服务器和从服务器的运行状态(2)主服务器运行故障时自动切换其中一台从服务器为主服务器 Sentin ...