在开发中,我们经常涌用到Activity,那么既然用到了Activity,就一定免不了在两个或者多个Activity之间传递数据。这里我们先说一说原理,然后在看看代码和例子。

情况A:我们需要从Activity_1启动并传递数据到Activity_2,Activity_2只需要接收来自Activity_1 的数据,但并不用做其他操作。

情况B:我们需要从Activity_1 启动Activity_2,同时希望Activity_2在销毁的时候向Activity_1传递数据。

首先我们来说一说情况A。

情况A是比较简单的,其实就Activity_1利用Intent的putExtra();方法来携带数据,然后Activity_2通过Intent的getExtra()方法来获取Activity_1传递过来的数据。

情况B比较麻烦一点点,但也是很简单。就是利用startActivityForResult()这个方法来启动Activity_2,然后Activity_2在利用Intent和setResult()方法来向Activity_1传送数据,最后,Activity_1通过回调方法onActivityResult()来接收Activity_2数据。

我们先来看看运行截图吧

然后我们看看代码,由于布局文件很简单。这里就不贴出布局文件了。就看看两个Activity的代码

package app.linfeng.com.myapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends AppCompatActivity { private Button bt_next;
private Button bt_nextforreustl; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); bt_next = (Button) findViewById(R.id.bt_next);
bt_nextforreustl = (Button) findViewById(R.id.bt_nextforresult); bt_next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/**
* 通过intent携带数据,传递给下一个活动
*/
Intent intent = new Intent(MainActivity.this,SecondAcitvity.class);
intent.putExtra("data","这个送给SecondActivity的礼物");
startActivity(intent);
}
}); /**
* 跳转到SecondActivity,并希望SecondActivity在销毁的时候放回数据
*
* */
bt_nextforreustl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SecondAcitvity.class);
/**
* 请求码唯一就可以了。这里传入1
*/
startActivityForResult(intent,1);
}
}); }
/**
* 这个方法用于接收SecondActivty在销毁的时候回调的方法
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode){
case 1:
if(resultCode == RESULT_OK){
String str = data.getStringExtra("GiveData");
Toast.makeText(MainActivity.this,str,Toast.LENGTH_SHORT).show();
}
break;
default:
}
}
}
package app.linfeng.com.myapplication;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast; public class SecondAcitvity extends AppCompatActivity { private Button bt_showData;
private Button bt_giveData; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second_acitvity); bt_showData = (Button) findViewById(R.id.bt_showdata);
bt_giveData = (Button) findViewById(R.id.bt_backdata); /**
* 通过intent来接收上一个活动传递过来的数据
*/
Intent intent = getIntent();
final String str = intent.getStringExtra("data");
if(str==null){
bt_showData.setEnabled(false);
bt_giveData.setEnabled(true);
}else{
bt_showData.setEnabled(true);
bt_giveData.setEnabled(false);
} bt_showData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(SecondAcitvity.this,str,Toast.LENGTH_SHORT).show();
}
}); /**
* 给MainActivyt回赠礼物
*/
bt_giveData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("GiveData","这是回赠给MainActivity的礼物");
setResult(RESULT_OK,intent);
finish();
}
}); } /**
* 用户点击放回键盘的时候需要返回数据
*/
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("GiveData","这是回赠给MainActivity的礼物");
setResult(RESULT_OK,intent);
finish();
} }

看到这里,相信大家也都清楚了吧。

Android中Activity之间的数据传递的更多相关文章

  1. Activity之间的数据传递-android学习之旅(四十七)

    activity之间的数据传递主要有两种,一种是直接发送数据,另一种接受新启动的activity返回的数据,本质是一样的 使用Bundle传递数据 Intent使用Bundle在activity之间传 ...

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

    1  基于消息的通信机制 Intent--------boudle,extra 用这种简单的形式,一般而言传递一些简单的类型是比较容易的,如int.string等 详细介绍下Intent机制 Inte ...

  3. Activity之间的数据传递

    最常用的Activity之间的数据传递. btnStartAty1.setOnClickListener(new View.OnClickListener() { @Override public v ...

  4. Android学习之Activity之间的数据传递

    Activity与Activity之间很多情况下都需要进行数据的传递,下面就用几个简单的例子来看一下. (一).一个Activity启动另一个Activity并将数据传递到这个Activity当中 思 ...

  5. Android 数据传递(一) Activity之间的数据传递

    bundle Google Bundle类说明 Bundle类是一个key-value对.Activity之间的数据通信可以通过bundle类来实现数据的存储.即将数据放入bundle里面,将Bund ...

  6. Android笔记(四) Activity之间的数据传递

    我们之前使用Intent进行Activity之间的跳转,其实Intent还可以在启动活动的时候传递数据. Intent提供了一系列的putExtra方法以便我们把想要传递的数据暂存在Intent中,待 ...

  7. Android Activity之间的数据传递

    1.向目标Activity传递数据: Intent intent=new Intent(this,Main2Activity.class); //可传递多种类型的数据 intent.putExtra( ...

  8. 从Android中Activity之间的通信说开来[转]

    http://www.cnblogs.com/virusswb/archive/2011/08/02/2124824.html 引言 最近两个星期在研究android的应用开发,学习了android应 ...

  9. Android中Activity之间访问互传参数

    public class MainActivity extends Activity { private static final int OTHER = 1; @Override protected ...

随机推荐

  1. linux-RabbitMQ安装命令

    一.RabbitMQ 1.安装配置epel源    $ rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.no ...

  2. 使用 ActiveMQ 创建 Java 应用

    本章重点 Java 应用中内嵌 ActiveMQ 使用 Spring 内嵌 ActiveMQ 创建请求/响应应用 使用 Spring 构建 JMS 客户端

  3. Linux命令之awk_1

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  4. TCP/IP Socket 的理解

         网络由下往上分为:物理层.数据链路层.网络层.传输层.会话层.表示层和应用层.      TCP 协议对应于传输层,HTTP 协议对应应用层,Socket 则是对 TCP/IP 协议的封装. ...

  5. http协议学习系列(一个博文链接)

    深入理解HTTP协议(转) http协议学习系列(转自:http://www.blogjava.net/zjusuyong/articles/304788.html) 1. 基础概念篇 1.1 介绍 ...

  6. GEF入门实例_总结_04_Eclipse插件启动流程分析

    一.前言 本文承接上一节:GEF入门实例_总结_03_显示菜单和工具栏 注意到app目录下的6个类文件. 这6个文件对RCP应用程序而言非常重要,可能我们现在对这几个文件的理解还是云里雾里,这一节我们 ...

  7.  P2152 [SDOI2009]SuperGCD (luogu)

    Stein算法是一种计算两个数最大公约数的算法,是针对欧几里德算法在对大整数进行运算时,需要试商导致增加运算时间的缺陷而提出的改进算法. 算法思想: 由J. Stein 1961年提出的Stein算法 ...

  8. Senior Manufacturing Technical Manager

    Job Description As a Manufacturing Technical Manager, you will be responsible for bringing new produ ...

  9. MonoBehavior lifecycle

    awake 只调用一次, awake在所有obj都初始化之后被调用. 用途: 初始化游戏状态 设置脚本间的引用 ### ExecuteInEditMode 编辑模式下 ``` 这个模式下,脚本编译,会 ...

  10. InnoDB引擎的特点及优化方法

    1.什么是InnoDB引擎?      InnoDB引擎是MySQL数据库的另一个重要的存储引擎,正成为目前MySQL AB所发行的新版的标准,被包含在所有二进制安装包里,和其他存储引擎相比,Inno ...