一般有三种方法
1.startActivity
ActivityA --> ActivityB
ActivityA中
Intent intent = new Intent(ActivityA.this,ActivityB.class);
startActivity(intent);
ActivityB中
intent = getIntent();
intent 传递数据
在A发送 intent.putExtra("key","value");
在B获取 String value = intent.getStringExtra("key");
在有需要传递对象的时候,使用序列化
// 通过Bundle 使用序列化 ParcelableData是实现了序列化接口的实体类
Bundle bundle = new Bundle();startActivity(intent);
接收数据
Bundle bundle = getIntent().getExtras();
ParcelableData parcelableData = bundle.getParcelable("MyData");
String testBundleString = bundle.getString("MyString");
Log.v("string=", testBundleString);
Log.v("name=", parcelableData.getName());
Log.v("age=", ""+parcelableData.getAge());
2.startActivityForResult
在A 使用这个跳转
Intent intent = new Intent(MainActivity.this,TwoActivity.class);
intent.putExtra("key", "value");
// 第二个参数是请求码,只要是一个唯一值
startActivityForResult(intent, 123); //有可以携带Bundle
再用onActivityResult接收
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch (requestCode) {
case 123:
if (resultCode == RESULT_OK) {
//接收对象
//Bundle bundle = data.getExtras();
//AddressBean addressBean = (AddressBean) bundle.getSerializable(Constant.ADDRESSBEAN);
String returnedData = intent.getStringExtra("key1");
}
break;
default:
}
}
在B 中
//传递对象
//Intent intent = new Intent();
//Bundle bundle = new Bundle();
//bundle.putSerializable(Constant.ADDRESSBEAN, addressArray.get(position));
//intent.putExtras(bundle);
//setResult(RESULT_OK, intent);
//finish();
Intent intent = new Intent();
intent.putExtra("key1","value two activity");
// 专门用于向上一个活动返回数据。第一个参数用于向上一个活动返回结果码,一般只使用RESULT_OK或RESULT_CANCELED这两个值
setResult(RESULT_OK, intent);
finish();
3.在 ActivityB中定义一个方法,表明需要的参数
public static void actionStart(Context context, String data1, String data2){
Intent intent = new Intent(context,ActivityB.class);
intent.putExtra("param1","data1");
intent.putExtra("param2","data2");
context.startActivity(intent);
}
在ActivityA中调用
ActivityB.actionStart(ActivityA.this,"data1","data2");