【问题标题】:onActivityResult in dialog fragment对话框片段中的 onActivityResult
【发布时间】:2014-04-28 18:33:49
【问题描述】:

我正在从对话片段中拍照。我还需要startActivityForResult(takePictureIntent, actionCode);

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) {
        super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
        switch (requestCode) {
            case SELECT_PHOTO:
                getActivity();
                if (resultCode == Activity.RESULT_OK) {
                    Uri selectedImage = imageReturnedIntent.getData();
                    String[] filePathColumn = { MediaStore.Images.Media.DATA };
                    Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);
                    cursor.moveToFirst();
                    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);

                    setPic();
                }
                break;
            case ACTION_TAKE_PHOTO_B: {
                getActivity();
                if (resultCode == Activity.RESULT_OK) {
                    handleBigCameraPhoto();

                }
                break;
            }
        }   
    }

但是这个方法没有被调用。有没有这样的方法可以在对话片段中使用??

【问题讨论】:

  • fragment的onActivityResult不会直接调用,需要从它的父activity调用。

标签: android android-dialogfragment start-activity onactivityresult


【解决方案1】:

试试这样:

从片段开始活动:

getActivity().startActivityForResult(intent, code);

在片段中返回结果:

在您的父活动(片段调用活动)中:

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

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

【讨论】:

  • 嘿,我试过你的解决方案,但它显示 Fragment 未附加到 Activity 的错误。
  • 在你的父活动(片段调用活动)中:如何调用片段调用活动?
【解决方案2】:

您需要做的就是实现托管活动的onActivityResult 并调用它的基类实现,如下所示...

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

    //this makes sure the child fragments receive this event
    super.onActivityResult(requestCode, resultCode, data);
    ...

}

您实际上并不需要对片段的引用。调用活动的基类实现将确保所有片段都收到对onActivityResult的调用

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 1970-01-01
    • 2013-10-31
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多