向Activity传递数据
数据传递
-
在Android开发中,经常要在Activity之间传递数据。使用Intent传递数据只需调用putExtra()方法将想要存储的数据存在Intent中即可。当启动了另一个Activity后,再把这些数据从Intent中取出即可。
-
在Activity01中将数据存储在Intent中
String data = "Hello Activity02"
Intent intent = new Intent(this,Activity02.class);
intent.putExtra("extra_data",data);
startActivity(intent);
-
从Activity02中取出传递过来的数据
Intent intent = getIntent();
String data = intent.getStringExtra("extra_data");
Log.i("Activity02", data);
-
还有一种传递数据的方式是调用putExtras()方法传递数据,该方法传递的是Bundle对象。调用putExtras()方法传递数据可以使用如下代码:
Bundle bundle = new Bundle();
bundle.putString("name", "Linda");
bundle.putInt("age", 20);
Intent intent = new Intent(this,Activity02.class);
intent.putExtras(bundle);
startActivity(intent);
-
如果想要在Activity02中取出上述方式传递的数据,可以使用如下代码:
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String stuName = bundle.getString("name");
int stuAge = bundle.getString("age");
Activity之间的数据回传
微博发布页面选择图片后,会回到微博发布页面并回传了图片选择页面的图片信息。其实这种效果是通过Andorid中的startActivityForResult()方法实现的。
startActivityForResult()示例代码如下:
Intent intent = new Intent(this,Activity02.class);
startActivityForResult(intent,1);
-
在Activity02中添加数据返回的示例代码,具体如下所示:
Intent intent = new Intent();
intent.putExtra("extra_data","Hello Activity01");
setResult(1,intent);
finish();
-
由于使用了startActivityForResult()方法启动Activity02,因此会在Actiivity01页面回调onActivityResult()方法,需要在Activity01中重写该方法来获取返回的数据
protected void onActivityResult(int requestCode, int resultCode,Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 1) {
String data = data.getStringExtra("extra_data");
Log.i("Activity01",data);
}
}