活动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活动并不是全部同时启动活动和返回结果集。所以我需要用另一种方式来管理它。