分享

Android?Bundle?使用

 lifei_szdz 2012-12-24

Android Bundle 使用

(2011-12-07 15:12:20)
标签:

andriod

bundle

杂谈

分类: Android

Bundle 对象: A mapping from String values to various Parcelable types
简单的说就是一个Map<String,Object>的封装类,可以从String类型的键中获得任意类型的对象。   
    public Bundle() {
        mMap = new HashMap<String, Object>();
        mClassLoader = getClass().getClassLoader();
    }
Bundle
封装了一些常用的方法,比如:
 putInt(String key, int value)
 putString(String key,String value)
.......................
 getInt(String key)
 getString(String key)
除了支持全部的基本类型,如bytecharbooleanshortintlongfloatdouble等,还支持数组、List
如:
String[] getStringArray(String key)
ArrayList<Integer> getIntegerArrayList(String key)
(省略Put方法)
如果自定义的类实现Serializable接口,同样可以将自定义的类put进去,并通过get获取。

Bundle
可用于Intent中附加信息的传输,

Activity间的通讯是通过Intent类。比如有两个类A.class, B.class

A启动新的activity B(单向),当B退出的时候A将不会接收到任何信息:

Intent i = new Intent(this,B.class); 

startActivity(i);

A启动新的actvity B(双向),当B退出的时候AonActivityForResult方法将会被调用给定的requestCode

A.class添加代码:

Java代码 

Intent i = new Intent(this, B.class);   

i.putExtra(key, value);  

startActivityForResult(i, ACTIVITY_CODE);   

     

B.class添加代码

  

Java代码 

//这里获取A传过来的数据   

Bundle extras = this.getIntent().getExtras();  

 //这里通过key的方式获取值   

String value = extras.getString(key);  

 

 Java代码 

//把值传回  

A.class Bundle bundle = new Bundle();   

bundle.putString(key,value);   

Intent intent = new Intent();   

intent.putExtras(bundle);   

setResult(RESULT_OK, intent); finish();  

Intent
对象自己也实现了一些方法可以直接获取Extras中的值。
比如:
byte getByteExtra(String name, byte defaultValue)
int getIntExtra(String name, int defaultValue)
float getFloatExtra(String name, float defaultValue)
String getStringExtra(String name)

Bundle bundle=intent.getExtra()
bundle.getString(String key)
等效于
getStringExtra(String key)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多