0

在我的片段上,我正在做:

    Intent intent = new Intent(getActivity(), OtherActivity.class);

    startActivityForResult(intent, RETURN_CODE);

我已经在我的 Activity 上覆盖了 onActivityResult

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

    logger.debug("!!ACTIVITY!!!Returned from the activity!!!!");

    super.onActivityResult(requestCode, resultCode, data);
}

片段也是如此!问题是这个方法只在 Activity 上被调用,而不是在片段中。任何线索为什么?

4

1 回答 1

1

支持 v4 存在问题,尝试在 Activity 的 onActivityResult 中使用 onPostResume 使用以下代码

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    returningWithResult = true;
    this.mData = data;
    mRequestCode = requestCode;
    mResultCode = resultCode;
}

并在 onPostResume

@Override
protected void onPostResume() {
    // TODO Auto-generated method stub
    super.onPostResume();
    if (returningWithResult)
        <your fragment>.actionOnActivityResult(mRequestCode, mResultCode, mData);

    returningWithResult = false;
}

还尝试仅针对活动结果启动意图

public void launchIntent(Intent intent, int code) {
    startActivityForResult(intent, code);
}

在片段中使用

getActivity().launchIntent(intent, PICK_FROM_CAMERA);

我不知道原因,但它对我有用。希望能帮助到你。

于 2013-10-16T09:17:23.730 回答