博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android Bundle的作用
阅读量:5974 次
发布时间:2019-06-19

本文共 2157 字,大约阅读时间需要 7 分钟。

hot3.png

解释:Bundle类用作携带数据,它类似于Map,用于存放key-value名值对形式的值。相对于Map,它提供了各种常用类型的putXxx()/getXxx()方法,如:putString()/getString()和putInt()/getInt(),putXxx()用于往Bundle对象放入数据,getXxx()方法用于从Bundle对象里获取数据。Bundle的内部实际上是使用了HashMap类型的变量来存放putXxx()方法放入的值:

public final class Bundle implements Parcelable, Cloneable {

            ......

 Map mMap;

 public Bundle() {

       mMap = new HashMap();

        ......

 }

 public void putString(String key, String value) {

      mMap.put(key, value);

 }

public String getString(String key) {

       Object o = mMap.get(key);

        return (String) o;

        ........//类型转换失败后会返回null,这里省略了类型转换失败后的处理代码

}}

在调用Bundle对象的getXxx()方法时,方法内部会从该变量中获取数据,然后对数据进行类型转换,转换成什么类型由方法的Xxx决定,getXxx()方法会把转换后的值返回。

 

举例:使用Bundle在Activity间传递数据

[1].从源Activity 中传递数据

//数据写入Intent

Intent openWelcomeActivityIntent=new Intent();
Bundle myBundelForName=new Bundle();
myBundelForName.putString("Key_Name",inName.getText().toString());
myBundelForName.putString("Key_Age",inAge.getText().toString());
openWelcomeActivityIntent.putExtras(myBundelForName);
openWelcomeActivityIntent.setClass(AndroidBundel.this, Welcome.class);
startActivity(openWelcomeActivityIntent);

 

目标Activity 中获取数据

//从Intent 中获取数据

Bundle myBundelForGetName=this.getIntent().getExtras();
String name=myBundelForGetName.getString("Key_Name");
myTextView_showName.setText("欢迎您进入:"+name);

 

使用Bundle在Activity间传递数据2

 

从源请求Activity 中通过一个Intent 把一个服务请求传到目标Activity 中

 

private IntenttoNextIntent;//Intent 成员声明

toNextIntent=new Intent();//Intent 定义
toNextIntent.setClass(TwoActivityME3.this, SecondActivity3.class);
//设定开启的下一个Activity
startActivityForResult(toNextIntent, REQUEST_ASK);
//开启Intent 时候,把请求码同时传递

 

在源请求Activity 中等待Intent 返回应答结果,通过重载onActivityResult()方法

@Override

protected void onActivityResult(int requestCode,int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==REQUEST_ASK){
if(resultCode==RESULT_CANCELED){
setTitle("Cancel****");
}else if(resultCode==RESULT_OK){
showBundle=data.getExtras();//从返回的Intent中获得Bundle
Name=showBundle.getString("myName");//从bundle中获得相应数据
text.setText("the name get from the second layout:\n"+Name);
}
}
}

转载于:https://my.oschina.net/u/2933456/blog/855375

你可能感兴趣的文章
PHP 提高PHP性能的编码技巧以及性能优化
查看>>
前端框架MVC/MVVM分析系列
查看>>
Oracle 11g 卸载
查看>>
入门视频采集与处理(学会分析YUV数据)
查看>>
【Android开发】构建Android源码编译环境
查看>>
static详解
查看>>
ActiveX 控件导入程序
查看>>
c++里的类型转化
查看>>
将今天写进历史,即可得出现在的世界是数字的
查看>>
负载均衡算法
查看>>
VS2005快捷键大全
查看>>
Linux Shell脚本入门--wget 命令用法详解
查看>>
rcp(插件开发) 如何查找自己定义的扩展点
查看>>
IIS7.5 中启用rest服务,Delete、Put
查看>>
Direct2D教程II——绘制基本图形和线型(StrokeStyle)的设置详解
查看>>
小伙伴们惊呆了!10行 JavaScript 实现文本编辑器
查看>>
ubuntu 设置root启动
查看>>
40款奇特的名片设计,吸引大家的眼球《上篇》
查看>>
Tomcat服务器
查看>>
在线编译器
查看>>