片段中未调用 onActivityResult

新手上路,请多包涵

承载此片段的活动有其 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);
    }
}

原文由 Spidy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 717
2 个回答

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

还有来自@siqing 的回答:

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

原文由 Spidy 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您正在使用 Navigation Component 从 @Mohit Mehta 获得帮助,这也可能对您有所帮助。它对我有用..

在 --- 的 MainActivity onActivityResult 方法中粘贴以下代码:

 for (Fragment fragment : navHostFragment.getChildFragmentManager().getFragments()){
        if (fragment != null){
            Log.d(TAG, "onResult Has Been Sent!");
            fragment.onActivityResult(requestCode, resultCode, data);
        }
    }

onActivityResult 方法 YOUR FRAGMENT 你可以得到结果。希望这对您有所帮助。

原文由 StackOverflower 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题