近期在开发android项目时,Activity1使用startactivityforresult方法跳转到Activity2,但是点击back键时,报错。
解释:当不满足触发条件就按返回键的时候,就要对此进行检测。尤其是当前Activity需要往前一个Activity传送消息时。即Activity1跳转到Activity2如果采用的是startActivityForResult这种方式,如果不重写返回键,程序不知道要返回给Activity1什么内容就会报错。因此,必须对Activity2的返回按键重写,重写onBackPressed():
所以在Activity2中,重写onBackPressed()方法。
@Override
public void onBackPressed() {
Intent intent = new Intent();
this.setResult(0, intent);
this.finish();
}
这是谷歌通用最流行的方法。但本人在这几天项目中也遇到过这样的问题,照着试做,发现还是会出现null异常,
于是找找资料重新整理思路一边,发现问题所在,已解决.
首先在写onActivityResult()页面的方法.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data != null) {
String addAddress = data.getStringExtra("AddAddress");
switch (resultCode) {
case 0:
aq.id(R.id.et_name).text(addAddress);
break;
case 1:
aq.id(R.id.et_phone).text(addAddress);
break;
case 2:
aq.id(R.id.et_detail_address).text(addAddress);
break;
default:
break;
}
}
}
注意:Intent一定要判空,Intent一定要判空,Intent一定要判空 我就是在这一步卡了点时间,找的全部资料也没提,最后才想到。原因是在AvtB跳回来的时候什么都不做的话就会传个null,可是
onActivityResult方法收到空时,并不会在你的setText()里面传空,所以就报错
跳转的Act方法:
@Override
public void onBackPressed() {
Intent intent = new Intent();
this.setResult(0, intent);
this.finish();
}