第一个活动中的onActivityResult在完成第二个活动后未返回结果



活动A使用以下代码调用活动B

startActivityForResult(new Intent(context, ActivityB), 1);

活动B调用活动c的方式:

startActivityForResult(new Intent(context, Activityc), 2);

我用返回结果完成活动C,并在处开始新的活动D

startActivity(new Intent(context, ActivityD);
setResult(RESULT_OK, new Intent());
finish();

我想在获得返回结果时完成活动A和活动B

但我没有得到返回结果。在这种情况下,

onActivityResult no calling in Activity A and Activity B

简而言之,我想要这个功能

btnGo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent next = new Intent(ActivityC.this, ActivityD.class);
startActivity(next);
setResult(RESULT_OK, next);
finish();
}
});

我只得到两者中的一个。它正在进行下一个活动或返回结果。我想进行下一个活动,同时返回结果。

可能是您没有设置requestCode,这就是您出现此问题的原因,请这样尝试

public final static int GO_FOR_COUNTRY = 11;
public final static int GO_FOR_STATE = 12;
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.register_country:
Intent intents=new Intent(Registration.this,CountryList.class);
startActivityForResult(intents, GO_FOR_COUNTRY);
break;
case R.id.register_state:
Intent intentstate=new Intent(Registration.this,StateList.class);
intentstate.putExtra("cids",cid);
startActivityForResult(intentstate, GO_FOR_STATE);
break;

default:
break;
}

以及您的OnActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if (resultCode == Activity.RESULT_OK) {

switch (requestCode)
{
case GO_FOR_COUNTRY:
try {
//your stuff
} catch (Exception e) {
e.printStackTrace();
}
break;
case GO_FOR_STATE:
try {
//your stuff
} catch (Exception e) {
e.printStackTrace();
}
break;
}

}

}

我试图解决我的问题,但在哪里找不到。实际上Android活动并不是全部同时启动活动和返回结果集。所以我需要用另一种方式来管理它。

相关内容

  • 没有找到相关文章

最新更新