Intent传递数据
方式比较多,先看看代码,一会儿再总结。
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="向第二个活动传递数据" /> </RelativeLayout>
secondactivity.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/tv1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="这是第二个活动" /> <Button android:id="@+id/btn2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="返回数据" /> </LinearLayout>
SecondActivity.java
public class SecondActivity extends Activity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.secondactivity); Button btn = (Button) findViewById(R.id.btn2); btn.setOnClickListener(this); //第一种方式 intent.getStringExtra(String);或者intent.getIntExtra(String,int defaultValue); Toast.makeText(this, getIntent().getStringExtra("str1"), Toast.LENGTH_LONG).show(); //Toast.makeText(this, getIntent().getIntExtra("age", 0), Toast.LENGTH_LONG).show(); //第二种方式、利用Bundle对象,bundle.getString()或者bundle.getInt(); //Bundle bundle = getIntent().getExtras(); //Toast.makeText(this, bundle.getString("str2"), Toast.LENGTH_LONG).show(); //Toast.makeText(this,bundle.getInt("age2"),Toast.LENGTH_LONG).show(); } @Override public void onClick(View v) { Intent intent = new Intent(); //返回数据的 //第一种方式 putExtra() intent.putExtra("age3", 45); //第二种方式setExtra() //intent.setData(Uri.parse("我是返回数据")); setResult(RESULT_OK,intent); //一定记得关闭当前activity并返回控制权 finish(); } }
在AndroidManifest.xml中注册。
<activity android:name=".SecondActivity" android:label="@string/second_activity"> <intent-filter > <action android:name="com.example.passingdata"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
MainActivity.java
public class MainActivity extends Activity implements OnClickListener { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = (Button) findViewById(R.id.btn1); btn.setOnClickListener(this); } @Override public void onClick(View v) { //传递数据的话,也要带上请求码 Intent intent = new Intent("com.example.passingdata.SecondActivity"); //传递数据的方式1: 使用 intent.putExtra(); intent.putExtra("str1", "String1"); intent.putExtra("age", 25); //方式2:bundle.putString(); bundle.putInt();最后把bundle绑定到intent上intent.putExtras(); //Bundle bundle = new Bundle(); //bundle.putString("str2", "String2"); //bundle.putInt("age2", 35); //intent.putExtras(bundle); //从这里可以看出,bundle作用上也相当于一个集合 startActivityForResult(intent,1); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode==1) { if(resultCode==RESULT_OK) { //取得数据 //方式1: getIntExtra() Toast.makeText(this, Integer.toString(data.getIntExtra("age3", 0)), Toast.LENGTH_LONG).show(); //方式2: intent.getData(); 它对应了Uri.parse()那种 //Toast.makeText(this, data.getData().toString(), Toast.LENGTH_LONG).show(); } } } }
(注意不要在传递数据的时候,用多种方式,很容易出错)
看看效果:
点击一个“返回数据”
闭着眼小结一下:(传递数据死活离不开intent,目前我了解到的是这样)
发送方:
a. intent.putExtra() ,也就是putExtra()的方式添加 Key/Value
b. 先把键值对给bundle对象,bundle.putString()或者bundle.putInt();然后把bundle给intent:intent.putExtras();
c.intent.setData(Uri.parse(String)) //应该是用于打开网页吧?
--------------(发送完了记得finish())
接受方:
a. getIntent()之后 ,用intent.getStringExtra() / intent.getIntExtra();
b. getIntent()之后,intent.getExtras()获取bundle对象,在之后,bundle.getString() / bundle.getInt()
c.intent.getData().toString();
好了,就这么多,记牢。
Intent传递数据的更多相关文章
- Android Intent传递数据
刚开始看郭大神的<>,实现以下里面的一些例子.Intent传递数据. 我们利用显示的方式进行Intent的启动. 1.启动intent并输入数据. Intent intent=new In ...
- 【转】Android 之最新最全的Intent传递数据方法
原文地址:https://www.jianshu.com/p/1169dba99261 intent传递数据 为什么要和intent单独拿出来讲,因为Intent传递数据也是非常重要的 一.简单的传递 ...
- Android Activity传递数据使用getIntent()接收不到,揭秘Intent传递数据与Activity启动模式singleTask的关系。
activity通过intent传递数据的时候,如果activity未启动,那么在这个刚启动的activity里通过getIntent()会获取到这个intent的数据.. 如果要启动的activit ...
- Android 消息广播Intent传递数据
1.创建布局文件activity_broadcast.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk ...
- Android 开发中使用Intent传递数据的方法
Activity之间通过Intent传递值,支持基本数据类型和String对象及 它们的数组对象byte.byte[].char.char[].boolean.boolean[].short.shor ...
- Android学习之Intent传递数据
Intent在Activity中的作用主要是有两个: 1.启动目标Activity 2.传递数据 Intent在传递数据时分两种情况:向下一个Activity传递数据和从下一个Activity返回数据 ...
- [Android] Android 最全 Intent 传递数据姿势
我们都是用过 Intent,用它来在组件之间传递数据,所以说 Intent 是组件之间通信的使者,一般情况下,我们传递的都是一些比较简单的数据,并且都是基本的数据类型,写法也比较简单,今天我在这里说的 ...
- Android学习之基础知识四-Activity活动4讲(Intent传递数据)
Intent除了可以开启一个活动,还能在启动活动的时候传递数据,此时Intent相当于一个保存数据的库,我们先把数据保存在Intent中,然后再根据各个activity的需要从其中取出数据. 一.使 ...
- Intent传递数据全解
概述 之前的博文也有介绍,查看-->用户界面开发基础 这里单独抽取出来,更加具体的记录一下,事实上主要是API的使用. Intent传递简单数据 能够以直接通过调用Intent的putExtra ...
随机推荐
- HDU 4638 Group 树状数组 + 思路
实际上就是问这个区间编号连续的段的个数,假如一个编号连续的段有(a+b)个人,我把他们分在同一组能得到的分值为(a+b)^2,而把他们分成人数为a和b的两组的话,得到的分值就是a^2+b^2,显然(a ...
- [原]zoj3772--【水题】线段树区间查询+矩阵乘法
思路来源:http://blog.csdn.net/u013654696/article/details/23037407#comments [做浙大校赛的时候没有看这道题,事后做的.思路不是自己的, ...
- BZOJ 1009 GT考试(ac自动机+矩阵DP)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1009 题意:给定一个长度为m的串s.有多少种长度为n的串不包含s? 思路:(1)将s插入 ...
- [CFGym101061G] Repeat it(逆元)
题目链接:http://codeforces.com/gym/101061/problem/G 题意:给一个数字n,让你重复m次,求最后这个数对1e9+7取模的结果. 思路:设数字n长度为k,重复m次 ...
- js判断页面放大缩小
项目中,经常会碰到页面被放大或者缩小,导致页面显示错误,js可以判断页面放大缩小. // 若返回100则为默认无缩放,如果大于100则是放大,否则缩小 function detectZoom (){ ...
- 详解Android中的屏幕方向
屏幕方向 是对Activity而言的,所以你可以在AndroidManifest.xml 文件中,通过<activity> 标记的screenOrientation 属性进行设定,例如: ...
- Trianglify – 五彩缤纷的 SVG 背景图案
Trianglify 是一个能够生成五颜六色的三角形图案的 JavaScript 库,可以用来作为 SVG 图像和 CSS 背景.它的灵感来自于 Btmills 的 Geopattern,并使用 d3 ...
- 点滴积累【JS】---JS小功能(createElement和insertBefore添加div下面的节点)
效果: 代码: <head runat="server"> <title></title> <script type="text ...
- HDU 5317 RGCDQ (质数筛法,序列)
题意:从1~1000,000的每个自然数质因子分解,不同因子的个数作为其f 值,比如12=2*2*3,则f(12)=2.将100万个数转成他们的f值后变成新的序列seq.接下来T个例子,每个例子一个询 ...
- android中handler用法总结
一.Handler的定义: Handler主要接收子线程发送的数据, 并用此数据配合主线程更新UI,用来跟UI主线程交互用.比如可以用handler发送一个message,然后在handler的线程中 ...