intent.setClass(Activity1.this, Activity2.class);
startActivityForResult(intent, NAME_REQUEST_CODE);
跳转Activity2,在Activity2返回
Intent intent=new Intent();
intent.putExtra("name",name_edit.getText());
setResult(RESULT_OK,intent);
finish();
结果:
这种方式获取不到,但是在setResult的时候只提供 intent.putExtra 这一种方式,应该是自动识别文本类型的。
看下源码:
//源码
public @NonNull Intent putExtra(String name, CharSequence value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putCharSequence(name, value);
return this;
}
是putCharSequence这钟方式put的,而获取值的时候是下面这种方式,两种不一样
// 源码
public String getStringExtra(String name) {
return mExtras == null ? null : mExtras.getString(name);
}
因此我们要用下面这种方式获取
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK && null != data) {
switch (requestCode) {
case NAME_REQUEST_CODE:
String name = data.getCharSequenceExtra("name")==null?"":data.getCharSequenceExtra("name").toString();
// todo
break;
}
}
}