传递简单数据

创建两个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. mysql排序关于英文字母abcd..xyz排序。

    mysql会自动进行比如pxj,pyj. 再根据p进行排序时候,会自动进行第二个字母的排序 select * from tbl_actor where first_char like 'p%' ord ...

  2. Java之旅(1)—Class类

    看到Class的时候,我们是不是会一下子想到我们敲代码中的class呢?此Class非彼class,这里讲的Class类实际上就是java类的统称,我们能够将其称之为抽象的类不是详细的一个类的名字. ...

  3. 【CV论文阅读】Deep Linear Discriminative Analysis, ICLR, 2016

    DeepLDA 并不是把LDA模型整合到了Deep Network,而是利用LDA来指导模型的训练.从实验结果来看,使用DeepLDA模型最后投影的特征也是很discriminative 的,但是很遗 ...

  4. ArcGIS 教程:Workflow Manager 高速浏览

    应用程序概述 Workflow Manager 用户界面提供了用于在整个作业的生命周期中创建和管理作业的工具. 下面全部信息将会在本帮助文档的兴许章节中进行具体的说明. 文件菜单 新建 - 在系统中创 ...

  5. Objective-C之成魔之路【8-訪问成员变量和属性】

    郝萌主倾心贡献,尊重作者的劳动成果.请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 訪问成员变 ...

  6. Lvs 负载均衡 (VS/NAT模式)

    一.LVS简介 LVS是 Linux Virtual Server 的简称,也就是Linux虚拟服务器.这是一个由章文嵩博士发起的一个开源项目,它的官方网站是 http://www.linuxvirt ...

  7. IEDA-maven引用本地jia包

    简单说下为啥用maven引用本地jar包:当在pom文件中配置需要引用了jar的坐标,但是maven引用不了(原因未知情况下),这种情况下就需要找开发提供相关依赖的的jar文件打成一个jar包发送过来 ...

  8. gradle使用笔记

    1 gradle user home 默认情况下是-/.gradle目录.可以使用gradle -g [directory]修改. 1.1 ./gradle/caches gradle下载的所有的依赖 ...

  9. 理解dropout——本质是通过阻止特征检测器的共同作用来防止过拟合 Dropout是指在模型训练时随机让网络某些隐含层节点的权重不工作,不工作的那些节点可以暂时认为不是网络结构的一部分,但是它的权重得保留下来(只是暂时不更新而已),因为下次样本输入时它可能又得工作了

    理解dropout from:http://blog.csdn.net/stdcoutzyx/article/details/49022443 http://www.cnblogs.com/torna ...

  10. C# winfrom TCP 服务端和客户端(链接)

    1.C#Winform TCP 之服务端: 可以参考下面链接,比较好.第二个链接可以看看,提供了一个思路. http://www.cnblogs.com/guolebin7/archive/2013/ ...