onActivityResult(...)没有被调用

时间:2012-03-30 13:45:50

标签: android android-intent activity-finish

问题:我说过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

3 个答案:

答案 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();
}