一个Activity需要调用另外一个Activity的同时传递数据,可以利用android.os.Bundle对象封装数据的能力,将欲传递的数据或参数,通过Bundle来传递不同Intent之间的数据。
在 Activity1是以Bundle封装对象,自然在Activity2亦是以Bundle的方式解开封装的数据;程序中以 getIntent().getExtras() 方法取得随着Bundle对象传递过来的数据。
Bundle对象针对了不同的数据类型提供了许多的方法,例如,此范例中传递String类型的数据,使用的方法为 Bundle.putString(stringName,stringValue):
反之,若要由Bundle对象中取出数据,则使用Bundle.getString(stringName)、 Bundle.getDouble(doubleName) 等相对应的方法即可。
Bundle newExtras = new Bundle();
if (cropValue.equals("circle")) {
newExtras.putString("circleCrop", "true");
}
Intent cropIntent = new Intent();
cropIntent.setData(img.fullSizeImageUri());
cropIntent.setClass(this, CropImage.class);
cropIntent.putExtras(newExtras);
/* pass through any extras that were passed in */
cropIntent.putExtras(myExtras);
startActivityForResult(cropIntent, CROP_MSG);
@Override
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
switch (requestCode) {
case MenuHelper.RESULT_COMMON_MENU_CROP: {
if (resultCode == RESULT_OK) {
mCropResultUri = Uri.parse(data.getAction());
}
break;
}
case CROP_MSG: {
if (resultCode == RESULT_OK) {
setResult(resultCode, data);
finish();
}
break;
}
}
}
Activity2:
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
if (extras.getString("circleCrop") != null) {
mCircleCrop = true;
mAspectX = 1;
mAspectY = 1;
}
mSaveUri = (Uri)extras.getParcelable(MediaStore.EXTRA_OUTPUT);
............
Bundle myExtras = getIntent().getExtras();
if (myExtras != null && (myExtras.getParcelable("data") != null
|| myExtras.getBoolean("return-data"))) {
Bundle extras = new Bundle();
extras.putParcelable("data", croppedImage);
setResult(RESULT_OK,
(new Intent()).setAction("inline-data").putExtras(extras));
finish();
-------------EOF----------------------
http://blog.chinaunix.net/u2/87831/showart_2369989.html