小编典典

片段中未调用 onActivityResult

all

onActivityResult当相机活动返回时,托管此片段的活动将被调用。

我的片段启动了一个结果活动,目的是发送给相机拍照。图片应用程序加载正常,拍照并返回。然而onActivityResult,永远不会被击中。我设置了断点,但没有触发任何东西。一个片段可以有onActivityResult吗?我会这么认为,因为它是一个提供的功能。为什么不触发这个?

ImageView myImage = (ImageView)inflatedView.findViewById(R.id.image);
myImage.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(cameraIntent, 1888);
    }
});

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if( requestCode == 1888 ) {
        Bitmap photo = (Bitmap) data.getExtras().get("data");
        ((ImageView)inflatedView.findViewById(R.id.image)).setImageBitmap(photo);
    }
}

阅读 118

收藏
2022-02-28

共1个答案

小编典典

托管活动覆盖onActivityResult(),但它没有调用super.onActivityResult()未处理的结果代码。显然,即使
Fragment 是发出startActivityForResult()调用的那个,Activity
还是第一次处理结果。当您考虑片段的模块化时,这是有道理的。一旦我实现super.onActivityResult()了所有未处理的结果,片段就可以处理结果。

还有来自@siqing 的回答:

要在您的片段中获得结果,请确保您调用startActivityForResult(intent,111);而不是getActivity().startActivityForResult(intent,111);在片段中。

2022-02-28