问题:我说过4个活动A,B,C和D.
A - 通话 - > B - 通话 - > ç
使用startActivityForResult(...,...)
完成新的活动调用现在我的问题是,如果我只是在活动C上调用finish,那么onActivityResult(...)将按预期调用。但我想完成C和startActivity(D,...);
//来自C的代码我正在调用finish()。
public void onSettingsClick(View v) {
System.out.println("My Parent ====== "+getParent());
if (getParent() == null) {
setResult(Activity.RESULT_CANCELED, new Intent());
} else {
getParent().setResult(Activity.RESULT_CANCELED,new Intent());
}
finish();
StartActivityUtil.launchSettings(this);// call to Activity D is done here
}
Plz帮助我,尝试过不同的溶胶。但没有运气:(
另外,我总是得到getParent()= null
答案 0 :(得分:1)
你必须startActivityForResult(D),并在onActivityResult中完成C(并且optionnaly将结果从D转移到C)
答案 1 :(得分:1)
你需要承担,完成和startActivity是异步方法,意味着调用这些方法,并不表示会立即调用完成,然后控制将转到startActivity,这些命令将被添加到队列中,并作为系统,将开始活动D,不将结果返回到父活动,摆脱这种情况,首先完成你的活动C,然后在onActivityResult上根据条件开始活动D
答案 2 :(得分:0)
public void onSettingsClick(View v) {
System.out.println("My Parent ====== "+getParent());
if (getParent() == null) {
setResult(Activity.RESULT_CANCELED, new Intent());
} else {
getParent().setResult(Activity.RESULT_CANCELED,new Intent());
}
// just toggle these 2 lines. is it works?
StartActivityUtil.launchSettings(this);// call to Activity D is done here
finish();
}