onActivityResult 在 setResult 之前调用
onActivityResult called before setResult
我有一个程序,其中 onActivityResult() 使用正确的请求代码和一个 null intent 参数调用并且,当 activity 调用 setResult() 时,onactivity没有调用结果。 onActivityResult() 在 startActivityForResult()
之后调用
public void placeListActivity(View view) {
Intent placeListIntent = new Intent(this,
PlaceListActivity.class);
// startActivity(placeListIntent);
this.startActivityForResult(placeListIntent, 5);
}
protected void onActivityResult(int request, int result, Intent arg2) {
super.onActivityResult(request, result, arg2);
if (request == 5 && result == Activity.RESULT_OK) {
handleOnActivityResult();
}
第二个Activity:
@Override
public void onBackPressed() {
if(status){
setResult(Activity.RESULT_OK);
finish();
}else{
super.onBackPressed();
}
}
setResult(Activity.RESULT_OK);
您只发送 resultCode,因此 intent 将收到 null。在 setResult 方法中将带有 resultCode 的 Intent 作为第二个参数发送。您将首先获得该意图 activity.
注意:-当activity的启动模式为singleTask或singleTop时,一旦activity以空数据启动,就会调用onActivityResult。为防止这种情况,请使用 Intent.setFlags(0) 重置默认标志。
我有一个程序,其中 onActivityResult() 使用正确的请求代码和一个 null intent 参数调用并且,当 activity 调用 setResult() 时,onactivity没有调用结果。 onActivityResult() 在 startActivityForResult()
之后调用public void placeListActivity(View view) {
Intent placeListIntent = new Intent(this,
PlaceListActivity.class);
// startActivity(placeListIntent);
this.startActivityForResult(placeListIntent, 5);
}
protected void onActivityResult(int request, int result, Intent arg2) {
super.onActivityResult(request, result, arg2);
if (request == 5 && result == Activity.RESULT_OK) {
handleOnActivityResult();
}
第二个Activity:
@Override
public void onBackPressed() {
if(status){
setResult(Activity.RESULT_OK);
finish();
}else{
super.onBackPressed();
}
}
setResult(Activity.RESULT_OK);
您只发送 resultCode,因此 intent 将收到 null。在 setResult 方法中将带有 resultCode 的 Intent 作为第二个参数发送。您将首先获得该意图 activity.
注意:-当activity的启动模式为singleTask或singleTop时,一旦activity以空数据启动,就会调用onActivityResult。为防止这种情况,请使用 Intent.setFlags(0) 重置默认标志。