今天想在地址管理页面添加新地址,需要把添加的新地址里面的内容放到地址管理页面,之前用的是startactivity+intent 传值,一直报空指针,原因是因为当你在获取新地址内容的时候那个activity还没有oncreate。
然而。用startActivityForResult+Intent就可以实现了。
requestcode和resultcode相当于标志,用来判断哪两个activity之间的传值。
- 下一个activity点击事件的代码(你需要传值的activity)
name = nameEditText.getText().toString();
phonenum = phonenumEditText.getText().toString();
zipcode = zipcodeEditText.getText().toString();
addressdetail = addressdetailEditText.getText().toString();
if (isEmpty(name, phonenum, zipcode, addressdetail)) {
Intent intentdata = new Intent(AddaddressActivity.this,
AddressActivity.class);
intentdata.putExtra("name", name);
intentdata.putExtra("phonenum", phonenum);
intentdata.putExtra("zipcode", zipcode);
intentdata.putExtra("addressdetail", addressdetail);
setResult(2, intentdata);
finish();
2当前activity的点击事件的代码(获取值得activity)
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(AddressActivity.this,
AddaddressActivity.class);
startActivityForResult(intent, 1);
}
3.在当前activity中需要重写activity中的onActivityResult方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == 2) {
name = data.getStringExtra("name");
phonenum = data.getStringExtra("phonenum");
addressdetail = data.getStringExtra("addressdetail");
listView.setAdapter(new SimpleAdapter(getApplicationContext(),
getDatabasePath(), R.layout.address_item, new String[] {
"name", "phonenum", "addressdetail" }, new int[] {
R.id.tv_name, R.id.tv_phonenum, R.id.tv_address }));
}
}