0

私のフラグメントで私はやっています:

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

    startActivityForResult(intent, RETURN_CODE);

アクティビティで onActivityResult をオーバーライドしました

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

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

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

同じことがフラグメントにも当てはまります!問題は、このメソッドがアクティビティでのみ呼び出され、フラグメントでは呼び出されないことです。理由はありますか?

4

1 に答える 1

1

v4 のサポートに問題があります。アクティビティの 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 に答える