传递简单数据

创建两个activity,FirstActivity和TwoActivity,这里将会将数据从FisrtActivity传给TwoActivity。

创建完activity的目录界面如下。

现在我们先对它们的layout布局做一些调整。

1. 在activity_first.xml中添加一个按钮,这是用来作为页面跳转的触发按钮。并将原先多余的其它组件删去。添加的代码如下。
 <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnStart"
android:text="启动另一个activity"/>

界面显示如下

2. 在activity_two.xml中添加TextView组件,其余组件可删去,保持简洁。其代码如下。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tv"
android:text="这是第二个activity"/>

界面显示如下

好了准备工作已经完成了,现在正式开始讲解啦。

首先我们的思路是在FirstActivity中先通过按钮的ID来获取Button对象,并为其添加监听事件,我们将会在这里进行activity的跳转,同时将数据添加给Intent对象,通过Intent对象来将数据传给TwoActivity。

1. FirstActivity代码如下
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View; public class FirstActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first); findViewById(R.id.btnStart).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i=new Intent(FirstActivity.this,TwoActivity.class);
i.putExtra("data","hello");
startActivity(i);
}
});
}
}

这里最关键的代码是Intent.putExtra(String name,String value),这是将数据绑定到Intent对象上,当然,这个方法有许多重载,也可绑定不是String类型的数据。比如

大家可根据情况做选择。

2. TwoActivity接收数据,代码如下
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView; import org.w3c.dom.Text; public class TwoActivity extends AppCompatActivity {
private TextView tv; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
//获取传入的Intent
Intent i=getIntent();
//利用我们在XML文件中定义的View的id属性来获取相应的View对象
tv=(TextView) findViewById(R.id.tv);
//设置文本内容
tv.setText(i.getStringExtra("data"));
}
}

这里最关键的代码就是Intent.getStringExtra(String name),name是在FirstActivity中设置的绑定的数据的名字data,返回的就是需要传递的数据。好了,现在运行应用,可以跳转activity的同时也可传递数据了,来运行一下吧!

传递数据包Bundle

上面的是将数据一个个附加到Intent对象进行传递的,现在换种方式,将需要的数据进行打包,然后一起传送出去。

1. FirstActivity
        ......
findViewById(R.id.btnStart).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i=new Intent(FirstActivity.this,TwoActivity.class);
//i.putExtra("data","hello");
Bundle b=new Bundle();
b.putString("name","MrY");
b.putInt("age",20);
i.putExtras(b);
startActivity(i);
}
});

这里创建了Bundle对象,然后调用相关的put方法将数据打包到Bundle对象上,最后只要将Bundle对象附加到Intent对象上。

2. 改变TwoActivity中代码来接收数据
        //获取传入的Intent
Intent i=getIntent();
Bundle data=i.getExtras();//获取Bundle对象
//利用我们在XML文件中定义的View的id属性来获取相应的View对象
tv=(TextView) findViewById(R.id.tv);
//设置文本内容
// tv.setText(i.getStringExtra("data"));
tv.setText(String.format("name=%s,age=%d",data.getString("name"),data.getInt("age")));

关键方法是Intent.getExtras(Bundle b)返回传递过来的Bundle数据包。

来运行应用吧,看一下第二种方式是否能达到预期效果呢,答案肯定是的啦。

当然还有一种Bundle传递方法

FirstActivity中用如下方式传递

i.putExtra("data",b);

TwoActivity中相应的改变获取Bundle的方法

Bundle data=i.getBundleExtra("data");

到这里要讲解的内容已经全部完成了!

activity间数据传递的更多相关文章

  1. Android零基础入门第83节:Activity间数据传递方法汇总

    在Activity间传递的数据一般比较简单,但是有时候实际开发中也会传一些比较复杂的数据,本节一起来学习更多Activity间数据的传递. 一.常用数据类型 在前面几节我们只学习了一些常用类型的数据传 ...

  2. 解析activity之间数据传递方法的详解

    转自:http://www.jb51.net/article/37227.htm 本篇文章是对activity之间数据传递的方法进行了详细的分析介绍,需要的朋友参考下     1  基于消息的通信机制 ...

  3. 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)

    1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...

  4. 详细介绍ASP.NET页面间数据传递的使用方法

    源码:http://www.jinhusns.com/Products/Download/?type=xcj 在ASP.NET中,页面间数据传递的方法有很多.下面为大家总结一下,页面间数据传递的方法. ...

  5. ASP.NET页面间数据传递的方法<转>

    ASP.NET页面间数据传递的方法 作者: 灰色的天空2  来源: 博客园  发布时间: 2010-10-28 11:06  阅读: 822 次  推荐: 0   原文链接   [收藏]   摘要:本 ...

  6. ASP.NET中实现页面间数据传递的方法

    说到页面间数据传递,很多人都会想到通过像Session这样的全局变量,但是向Session中添加的东西太多会增加服务器的压力,页面间数据传递,数据的作用范围越小越好.   ASP.NET页面间数据传递 ...

  7. ASP.NET 页面间数据传递的方法

    在做WEB开发时,很多地方会涉及到页面间的数据传递.这几天在完善教务基础系统,遇到了这个问题,上网查了一些资料,现总结如下: 说到页面间数据传递,很多人都会想到通过像Session这样的全局变量,但是 ...

  8. [转]Angular2-组件间数据传递的两种方式

    本文转自:https://www.cnblogs.com/longhx/p/6960288.html Angular2组件间数据传递有多种方式,其中最常用的有两种,一种是配置元数据(或者标签装饰),一 ...

  9. Java并发:线程间数据传递和交换

    转自:https://www.cnblogs.com/java-zzl/p/9741288.html 一.通过SynchronousQueue方式实现线程间数据传递: 线程A与线程B共同持有一个Syn ...

随机推荐

  1. Google Kaptcha验证码的使用

    原文:http://www.kailing.pub/article/index/arcid/92.html Kaptcha是什么? kaptcha 是谷歌开源的非常实用的验证码生成工具,基于Simpl ...

  2. 利用Python爬虫实现百度网盘自动化添加资源

    事情的起因是这样的,由于我想找几部经典电影欣赏欣赏,于是便向某老司机寻求资源(我备注了需要正规视频,绝对不是他想的那种资源),然后他丢给了我一个视频资源网站,说是比较有名的视频资源网站.我信以为真,便 ...

  3. 百度语音识别API初探

    近期想做个东西把大段对话转成文字.用语音输入法太慢,所以想到看有没有现成的API,网上一搜,基本就是百度和讯飞. 这里先看百度的 笔者使用的是Java版本号的 下载地址:http://bos.nj.b ...

  4. SaltStack学习系列之State安装Nginx+PHP环境

    目录结构 |-- pillar | |-- nginx | | `-- nginx.sls #nginx变量(key:value) | `-- top.sls `-- salt|-- init #初始 ...

  5. 【转】学习JavaScript闭包

    原文: http://www.cnblogs.com/Lau7/p/7942100.html#undefined ------------------------------------------- ...

  6. Linux下C编程的学习_1

    0x0:为什么写这个系列的文章 博客原本的定位是安卓游戏的破解,可是为什么写这系列的文章呢? 由于在破解过程中,我们是无法避免来敲代码的,恢复算法,模拟算法,游戏中对数据的解密.游戏中对保存在clie ...

  7. hdu4057 Rescue the Rabbit(AC自己主动机+DP)

    Rescue the Rabbit Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...

  8. IDEA启动Tomcat报错

    Maven编译成功, 可是启动Tomcat报错: Application Server was not connected before run configuration stop, reason: ...

  9. 使用fiddler将网站上的css js重定向至本地文件

    使用fiddler将网站上的css js重定向至本地文件,进行在线调试 https://github.com/annnhan/ReRes 1条回复 这是一篇写给公司负责切图和调样式的前端的文章.主要适 ...

  10. Javascript基本概念梳理

    javascript里的数据类型: 原始类型:数字,字符串.布尔值.(原始值:null,undefined) 对象类型:键值对,数组,function,全局对象(MATH,JSON) 保留字: abs ...