一般有三種方法
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();bundle.putString("MyString", "test bundle");
bundle.putParcelable("MyData", new ParcelableData());
intent.putExtras(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");