0

问题:我说 4 个活动 A、B、C 和 D。

A -- 调用 --> B -- 调用 --> C

使用 startActivityForResult(... , ...) 完成新的活动调用

现在我的问题是,如果我只是在活动 C 上调用完成,则按预期调用 onActivityResult(...)。但我想完成 C 和 startActivity(D,...);

// 来自我调用finish() 的C 代码。

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
}

请帮帮我,尝试过不同的溶胶。但没有运气:(

我也总是得到 getParent() = null

4

3 回答 3

1

你必须 startActivityForResult(D),并在 onActivityResult 中完成 C(并且可选地将结果从 D 传输到 C)

于 2012-03-30T13:48:54.343 回答
1

你需要明白,finish和startActivity是异步方法,就是调用这些方法,并不表示finish会立即被调用,然后控制会转到startActivity,这些命令会被加入队列,作为系统,会启动活动D,不向父活动返回结果,要摆脱这种情况,首先完成你的活动C,并在B上的onActivityResult根据条件启动活动D

于 2012-03-31T06:12:43.783 回答
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();
}
于 2012-03-30T13:50:10.273 回答