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)
除了支持全部的基本类型,如byte、char、boolean、short、int、long、float、double等,还支持数组、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退出的时候A的onActivityForResult方法将会被调用给定的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)
简单的说就是一个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)
除了支持全部的基本类型,如byte、char、boolean、short、int、long、float、double等,还支持数组、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退出的时候A的onActivityForResult方法将会被调用给定的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)