传递简单数据

创建两个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. linux 硬件中断调节

    什么是中断 中断interrupts是指硬件主动的来告诉CPU去做某些事情.比如网卡收到数据后可能主动的告诉CPU来处理自己接受到的数据,键盘有了按键输入后会主动告知CPU来读取输入. 硬件主动的打扰 ...

  2. NYOJ 题目42 一笔画问题(欧拉图)

    一笔画问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描写叙述 zyc从小就比較喜欢玩一些小游戏.当中就包含画一笔画.他想请你帮他写一个程序.推断一个图是否可以用一笔画下 ...

  3. Chrom开发者工具详解

    Chrome开发者工具不完全指南(一.基础功能篇) http://www.mamicode.com/info-detail-863534.html Chrome开发者工具不完全指南(二.进阶篇) ht ...

  4. start-all.sh 启动时报错解决方案

    文件拥有者不是当前用户,或者文件权限没有修改权限 解决方法: sudo chmod 777  "文件名" 或者用 su root 登录,然后删除  再 exit Datanote服 ...

  5. AE After Effect 如何替换和修改素材

    替换素材:如图所示,相框外的人是成双成对的,相框里面的却只有一个人,我们想要把这个素材替换成两个人的.我们鼠标放到视频预览框的任何一个元素上面底部都会提示这是什么素材.比如我放到一个人的上面,则该人物 ...

  6. DataNucleus之JDO操作演示样例

    JDO(Java Data Object )是Java对象持久化的新的规范.也是一个用于存取某种数据仓库中的对象的标准化API. 注意JDO是一种规范,而不是一个产品.而DataNucleus正是实现 ...

  7. iOS 基于 MVC 的项目重构总结

    关于MVC的争论 关于MVC的争论已经有非常多,对此我的观点是:对于iOS开发中的绝大部分场景来说,MVC本身是没有问题的,你觉得的MVC的问题,一定是你自己理解的问题(资深架构师请自己主动忽略本文) ...

  8. SpringMVC 学习笔记(五) 基于RESTful的CRUD

    1.1. 概述 当提交的表单带有_method字段时,通过HiddenHttpMethodFilter 将 POST 请求转换成 DELETE.PUT请求,加上@PathVariable注解从而实现  ...

  9. Lua学习笔记7:时间和日期

    lua中的时间类似于C语言中的时间,例如以下: local time = os.time() print(time) local t = os.date("*t") for k,v ...

  10. 怎样在gluster的源代码中加入自己的xlator

    本文并不说明怎样编写一个xlator.在glusterfs3.6.1下验证成功 目标在glusterfs-3.6.1/xlators/debug/下建立一个自己的xlator库并能够统一安装到系统文件 ...