Android Intent传递数据
刚开始看郭大神的<<第一行代码>>,实现以下里面的一些例子.Intent传递数据.
我们利用显示的方式进行Intent的启动.
1.启动intent并输入数据.
Intent intent=new Intent(MainActivity.this,TwoActivity.class
);
intent.putExtra("data", "hello two");
startActivity(intent);
2.接收数据.
Intent intent=getIntent();
Log.i("data", intent.getStringExtra("data"));
注.intent传递数据的方式是键值对的形式,所以我们要根据预键来取.这里我们传递的是一个String字符串,当然你也可以传递其他数据类型.不过取的时候我们要根据数据类型来使用不同方法取.如下(当然还有很多,以此类推).
intent.getIntExtra(name, defaultValue);
intent.getBooleanExtra(name, defaultValue);
3.返回数据
Intent intent1=new Intent(MainActivity.this,TwoActivity.class
);
intent1.putExtra("data", "hello two");
startActivityForResult(intent1, 1);
在这里我们使用的不是startActivity();而是startActivityForResult();,这是我们要返回数据,所以必须要一个用来识别返回数据的code.
Intent intent=getIntent();
data=intent.getStringExtra("data");
Log.i("data", data);
findViewById(R.id.btn_twolayout).setOnClickListener(new OnClickListener(
) {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.putExtra("data1", data+"收到.");
setResult(RESULT_OK, intent);
finish();
}
});
接收并返回数据.setResult(RESULT_OK, intent);.然后我们使用finish();将当前的activity销毁掉,返回上一个activity.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode==1) {
if (resultCode == RESULT_OK) {
Log.i("data1", data.getStringExtra("data1"));
}
}
super.onActivityResult(requestCode, resultCode, data);
}
最后我们重写onActivityResult();方法,并判断requestCode是否等于我们预先设定好的code,和resultCode是否等于RESULT_OK.
在onActivityResult();方法里带有三个参数,分别是requestCode,我们在启动活动时传入的请求码.resultCode,我们在返回数据时候传入的处理结果.data,携带着返回数据的intent.
此外我们还有一个问题,如果我们不是通过预先设定好的按钮返回上一个activity,而是通过back按键返回怎么办?
@Override
public void onBackPressed() {
Intent intent=new Intent();
intent.putExtra("data1", data+"收到.");
setResult(RESULT_OK, intent);
finish();
}
这个时候我们可以通过重写onBackPressed(); 方法来解决.这样的话当我们按下back按键,就会去执行onBackPressed();方法中的代码.
么么哒的效果图 o.o 
Android Intent传递数据的更多相关文章
- Android Intent 传递数据注意事项
不要通过 Intent 在 Android 基础组件之间传递大数据(binder transaction缓存为 1MB),可能导致 OOM.
- Android:Intent传递数据的几种类型和源码实现
public class Intent implements Parcelable, Cloneable { //... private String mAction; private Uri m ...
- 【转】Android 之最新最全的Intent传递数据方法
原文地址:https://www.jianshu.com/p/1169dba99261 intent传递数据 为什么要和intent单独拿出来讲,因为Intent传递数据也是非常重要的 一.简单的传递 ...
- Android Activity传递数据使用getIntent()接收不到,揭秘Intent传递数据与Activity启动模式singleTask的关系。
activity通过intent传递数据的时候,如果activity未启动,那么在这个刚启动的activity里通过getIntent()会获取到这个intent的数据.. 如果要启动的activit ...
- Android 消息广播Intent传递数据
1.创建布局文件activity_broadcast.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk ...
- Android 开发中使用Intent传递数据的方法
Activity之间通过Intent传递值,支持基本数据类型和String对象及 它们的数组对象byte.byte[].char.char[].boolean.boolean[].short.shor ...
- Android学习之Intent传递数据
Intent在Activity中的作用主要是有两个: 1.启动目标Activity 2.传递数据 Intent在传递数据时分两种情况:向下一个Activity传递数据和从下一个Activity返回数据 ...
- [Android] Android 最全 Intent 传递数据姿势
我们都是用过 Intent,用它来在组件之间传递数据,所以说 Intent 是组件之间通信的使者,一般情况下,我们传递的都是一些比较简单的数据,并且都是基本的数据类型,写法也比较简单,今天我在这里说的 ...
- Android学习之基础知识四-Activity活动4讲(Intent传递数据)
Intent除了可以开启一个活动,还能在启动活动的时候传递数据,此时Intent相当于一个保存数据的库,我们先把数据保存在Intent中,然后再根据各个activity的需要从其中取出数据. 一.使 ...
随机推荐
- Oracle创建数据库、表、用户
create tablespace south_knowledge logging datafile 'D:\TestDatabase\south_knowledge.dbf' size 10m au ...
- (转载) socket:10038错误{winSock的一个bug:当closesocket多次错误使用时会导致问题}
这几天想在一个开源的代码上进行修改,以期研发出一个产品出来. 程序原来是单线程网络程序,需要修改为多线程,修改之后,总是出问题,辅助线程中的recv函数总是运行一阵子之后收到长度为-1的数 ...
- 解决rsync 同步auth failed on module问题
今天在同步备份文件时遇到一个情况,以前正常的备份,在昨天突然同步备份文件失败了.于是开始检查原因..... 报错日志/var/log/rsyncd.log发现错误 // :: [] auth fail ...
- php 函数之 )_each()list()implode()explode()in_array()
<?php /* implode() 把数组组合成字符串 explode() 把字符串分割成数组 in_array() 检测内容是否在数组中 each()把数组元素拆分成新的数组 list() ...
- [汇编语言]-第八章 div指令,伪指令dd,dup
1- div除法指令 (1) 除数: 有8位和16位两种,在一个寄存器或内存单元中. (2) 被除数: 默认放在AX和DX或AX中 除数为8位, 被除数为16位, 默认在AX中存放. 除数为16位, ...
- 变形课--hdu1181
变形课 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)Total Submis ...
- FMDB将对象放进数据库[一]
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- Azure File SMB3.0文件共享服务(1)
Azure Storage File是Azure推出的文件共享服务,目前的版本同时支持SMB 2.1和SMB 3.0协议.文件共享服务非常适合那些希望把自己数据中心中使用文件共享的应用程序,在云端需要 ...
- Qt creator error: LNK1123: 转换到 COFF 期间失败: 文件无效或损坏(vs2010的嵌入式清单文件)
下面是vs2010导入别人文件时出现的问题的解决方案:VS2010在经历一些更新后,建立Win32 Console Project时会出“error LNK1123” 错误,解决方案为将 项目|项目属 ...
- Tortoise-SVN 出现“unable to connect to a repository at url no element found”解决办法
安装要SVN server服务器后,建立自己的Repositories,创建自己的项目文件夹 如,https://xxxxxxxxxx.com:8443/ 安装Tortoise-svn进行设置目标链接 ...