Android中Activity之间的数据传递
在开发中,我们经常涌用到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之间的数据传递的更多相关文章
- Activity之间的数据传递-android学习之旅(四十七)
activity之间的数据传递主要有两种,一种是直接发送数据,另一种接受新启动的activity返回的数据,本质是一样的 使用Bundle传递数据 Intent使用Bundle在activity之间传 ...
- activity之间的数据传递方法
1 基于消息的通信机制 Intent--------boudle,extra 用这种简单的形式,一般而言传递一些简单的类型是比较容易的,如int.string等 详细介绍下Intent机制 Inte ...
- Activity之间的数据传递
最常用的Activity之间的数据传递. btnStartAty1.setOnClickListener(new View.OnClickListener() { @Override public v ...
- Android学习之Activity之间的数据传递
Activity与Activity之间很多情况下都需要进行数据的传递,下面就用几个简单的例子来看一下. (一).一个Activity启动另一个Activity并将数据传递到这个Activity当中 思 ...
- Android 数据传递(一) Activity之间的数据传递
bundle Google Bundle类说明 Bundle类是一个key-value对.Activity之间的数据通信可以通过bundle类来实现数据的存储.即将数据放入bundle里面,将Bund ...
- Android笔记(四) Activity之间的数据传递
我们之前使用Intent进行Activity之间的跳转,其实Intent还可以在启动活动的时候传递数据. Intent提供了一系列的putExtra方法以便我们把想要传递的数据暂存在Intent中,待 ...
- Android Activity之间的数据传递
1.向目标Activity传递数据: Intent intent=new Intent(this,Main2Activity.class); //可传递多种类型的数据 intent.putExtra( ...
- 从Android中Activity之间的通信说开来[转]
http://www.cnblogs.com/virusswb/archive/2011/08/02/2124824.html 引言 最近两个星期在研究android的应用开发,学习了android应 ...
- Android中Activity之间访问互传参数
public class MainActivity extends Activity { private static final int OTHER = 1; @Override protected ...
随机推荐
- IDEA运行debug为灰色无法运行
这种情况一般在使用他人项目的时候产生. 检查几个问题,本地环境是否配置好 然后进入项目的入口右键运行是否可以正常运行 如果不可以,就在 修改一下src文件 一般就可以正常使用了
- MySql基础学习-数据操作
对于数据的操作,无非是“增删该查”这几种操作. 1增加 数据的增加使用insert语句插入 语法:INSERT INTO TABLE_NAME(column1,column2,...)VALUES(v ...
- php:file()与file_get_contents():讲日志文件没行读为数组形式
file()与file_get_contents()一样,都是读取某文件的内容.file_get_contents()输出的是整个文件(不能读取TXT里的首行缩进和换行符). file() 函数把整个 ...
- Memcache 笔记(2)
一.Memcache概述出现的原因:随着数据量的增大,访问的集中,使得数据库服务器的负担加重,数据库响应恶化,网站显示延迟等 memcache:是高性能的分布式内存缓存服务器.通过缓存数据库的查询结果 ...
- 《Advanced Bash-scripting Guide》学习(五):检查一个可执行文件是否存在
本文所选的例子来自于<Advanced Bash-scripting Gudie>一书,译者 杨春敏 黄毅 ABS书上的例子是这样的: #!/bin/bash echo hello;ech ...
- python reload(sys)找不到,name 'reload' is not defined
在操作数据库的时候遇到这个问题,为什么会出现这种原因?查询如下: python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDeco ...
- 利用Pelican搭建个人博客
博客基于win7系统,python2.7和pelican. 1.安装工具 安装virtualenv pip install virtualenv 下载make,或者make移动至任一目录,并将路径写入 ...
- Java 接口与继承 道至简第六章发表阅读笔记
一.继承条件下的构造方法调用 class Grandparent { public Grandparent() { System.out.println("GrandParent Creat ...
- 2018.7.28 A murder that scandalised Harvard and the world
A murder that scandalised Harvard and the worldVisiting Boston in 1868, Charles Dickens was asked wh ...
- LeetCode Continuous Subarray Sum
原题链接在这里:https://leetcode.com/problems/continuous-subarray-sum/description/ 题目: Given a list of non-n ...