一、API文档说明

  1.介绍

    用于不同Activity之间的数据传递

Bundle相当于Map类,就是一个映射,用Bundle绑定数据,便于数据处理

通过存放数据键(key)获取对应的各种类型的值(value),而且必须通过键(key)获取。

2.使用

Intent提供了多个重载方法来携带数据

putExtras(Bundle data):向Intent中放入需要的数据包

Bundle getExtras():取出Intent所携带的数据

putExtras(String name, Xxx value):向Intent中按照key-value形式传值

getXxxExtra(String name):从Intent中按key取值

从上面方法中可以看到Bundle就像一个数据包一样,Bundle中存取数据的方法如下:

pubXxx(String key, Xxx data):向Bundle中放入数据

pubSerializable(String key, Serializable data):向Bundle中放入一个可序列化的对象。

getXxx(Strign key):从Bundle中取出数据

getSerializable(String key, Serializable data):从Bundle中取出一个可序列化的对象。

Activity还提供了一个startActivityForResult(Intent intent, int requestCode)方法来启动其他Activity。这样就需要如下两个条件:

1、当前Activity需要重写onActivityResult(int requestCode, int resultCode, Intent intent)方法来获取返回的数据。

2、被启动的Activty需要调用setResult方法设置处理结果。

  3.重要方法

    clear():清除此Bundle映射中的所有保存的数据。

    clone():克隆当前Bundle

    containsKey(String key):返回指定key的值

    getString(String key):返回指定key的字符

    hasFileDescriptors():指示是否包含任何捆绑打包文件描述符

    isEmpty():如果这个捆绑映射为空,则返回true

    putString(String key, String value):插入一个给定key的字符串值

    readFromParcel(Parcel parcel):读取这个parcel的内容

    remove(String key):移除指定key的值

    writeToParcel(Parcel parcel, int flags):写入这个parcel的内容

bundle的实例:

第一个Activity发出参数!

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.MotionEvent;

public class TestBundle extends Activity { 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
}

public boolean onTouchEvent(MotionEvent event) { 
Intent intent = new Intent(); 
intent.setClass(TestBundle.this, Target.class); 
Bundle mBundle = new Bundle(); 
mBundle.putString("Data", "hello, bear");//压入数据 
intent.putExtras(mBundle); 
startActivity(intent); 
finish(); 
return super.onTouchEvent(event); 

}

第二个Activity,接收参数

import android.app.Activity; 
import android.os.Bundle;

public class Target extends Activity{

public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
Bundle bundle = getIntent().getExtras(); 
String data=bundle.getString("Data");//读出数据 
setTitle(data); 
}

}

另外onCreate(Bundle savedInstanceState) 中的savedInstanceState用于当前activity被切换之前保存临时数据,以便在下次返回时显示之前的数据的。

因此在想使用Bundle savedInstanceState保存临时数据,就应该在onCreate(Bundle savedInstanceState)方法中提前写好savedInstanceState!=null时的逻辑。

参照理解:http://blog.sina.com.cn/s/blog_652dd96d0100ug6h.html

/*/

与SharedPreferences的区别

  SharedPreferences是简单的存储持久化的设置,就像用户每次打开应用程序时的主页,它只是一些简单的键值对来操作。它将数据保存在一个xml文件中;

  Bundle是将数据传递到另一个上下文中或保存或回复你自己状态的数据存储方式。它的数据不是持久化状态。

转载于:https://www.cnblogs.com/banzhuan/p/6441366.html

Android的Bundle传递数据的使用相关推荐

  1. 5、android使用意图传递数据之全局变量传递

    实例: 1.layout的代码 activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/ap ...

  2. Android之Intent传递数据

    1.Android中的Intent对象中包含了多个putXXX()方法(如putExtra()方法)用来插入不同类型的额外数据,也包含了多个getXXX()方法(如getStringExtra().g ...

  3. 【Android】Intent传递数据量过大的问题android.os.TransactionTooLargeException

    在做相册多选时,相册选择界面跳转预览界面时需要通过Intent将所有照片的数据传递给PreviewActivity(预览界面),而当数据量大的时候程序会崩溃,错误信息是android.os.Trans ...

  4. android bundle传递参数,android – 使用bundle将数据从一个活动传递...

    我目前正在尝试通过REST API调用获取数据,解析它以获取我需要的信息,然后将该信息传递给新活动.我正在使用loopj.com中的异步HTTP客户端作为REST客户端,然后分别使用以下代码将onCl ...

  5. android intent bundle传递参数,Android 使用Intent和Bundle传递数据及如何传递enum

    推荐文章 Settings Bundle是在自己的程序中建立的一组文件,利用它可以告诉设备中的Settings程序我们写的程序有哪些设置项.用户在Settings程序中设置好相关相关选项后回到我们自己 ...

  6. android fragment面试,Android fragment之间传递数据的方式?

    方法一: 1.在MainFragment中设置一个setData()方法,在方法中设置更改按钮名称; //MainFragment.java文件中public void setData(String ...

  7. Android之Bundle类

    API文档说明 1.介绍 用于不同Activity之间的数据传递 1.重要方法 clear():清除此Bundle映射中的所有保存的数据. clone():克隆当前Bundle containsKey ...

  8. android bundle 对象,Android Bundle传递对象

    首先Android的Bundle是可以传递对象的.我们可以用Bundle b = new Bundle():b.putSerializable("key", 对象引用); 但是这样 ...

  9. android Handler Message传递参数,handler子线程和主线程通讯

    创建Handler private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) { ...

  10. Android中Bundle

    Bundle主要用于传递数据:它保存的数据,是以key-value(键值对)的形式存在的. Bundle经常使用在Activity之间或者线程间传递数据,传递的数据可以是boolean.byte.in ...

最新文章

  1. Linux镜像USB转网口驱动模块配置
  2. 如何用人工智能帮你找论文?
  3. conda 装tensorboardx_【工欲善其事】TensorboardX的使用
  4. 斐波那契数列性质【记住】
  5. empty怎么发音_empty,怎么读,解答要读出来,empty怎么读慢一点,清楚一点!
  6. 「AI大牛」陶大程出任京东探索研究院院长!曾连续6年入选全球高被引科学家...
  7. asp中sub与function的区别
  8. ai中如何插入签名_如何在PDF中插入一个或多个空白页?
  9. E. 存储过程(procedure)
  10. ubuntu 16.04常用命令
  11. 我想说:工作没那么难找吧
  12. 华为机试HJ95:人民币转换
  13. 查看linux版本是 centos还是ubuntu
  14. 香港科技大学理学院数据建模硕士学位项目MSc DDM 项目介绍×申请指南
  15. 前端实现街道地图_webgis前端地图功能展示
  16. 图片处理--处理成灰色图片,高斯模糊
  17. Ethernet_II帧和802.3_Ethernet帧格式比较
  18. 慕尼黑工业大学计算机博士申请条件,慕尼黑大学博士条件
  19. 博客优化、收录、RSS技巧
  20. android 5.1 壁纸路径,Android5.1 壁纸来源选项中有两个“壁纸”选项

热门文章

  1. 7-110 自动售货机 (30 分)
  2. linux c语言头文件 在另外的地方,linux下的c语言的头文件在windows下头文件是哪几个?...
  3. linux操作实例,linux下的一些文档操作实例 | Soo Smart!
  4. visual studio code安装
  5. 搜索引擎技术在仿冒网站检测中的应用
  6. c++ vector向量
  7. Ubuntu16.04 安装Apache2和php后,无法访问phpinfo.php
  8. JavaSE基础——数组概述和定义格式说明
  9. 基于SSH的共享笔记系统
  10. 栈溢出(Stack Overflow)