Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在对话框片段中未调用onActivityResult_Java_Android_Android Activity - Fatal编程技术网

Java 在对话框片段中未调用onActivityResult

Java 在对话框片段中未调用onActivityResult,java,android,android-activity,Java,Android,Android Activity,所以,我读了一些关于这方面的文章,但我不能让它工作。 基本上,我有一个对话框,用户在其中选择拍摄一张新照片或从他们的图库中选择一张照片。代码如下: @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setCancelable(true)

所以,我读了一些关于这方面的文章,但我不能让它工作。 基本上,我有一个对话框,用户在其中选择拍摄一张新照片或从他们的图库中选择一张照片。代码如下:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setCancelable(true)
    .setItems(R.array.galeria_camera_array, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int userChoice) {
            if (userChoice == 1) {
                // take photo
            }
            if (userChoice == 0) {
                Intent galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(galleryIntent, 1);
            }
        }
    });

    return builder.create();
}
然后,onActivityResult:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    //choose file from gallery
}

有人能帮忙吗?在我重新阅读10页的理论之前。。。我对这种事情还不太熟悉。谢谢。

解决此问题的简单方法是将片段的onActivityResult移动到活动中,或者您可以使用活动的onActivityResult调用片段中的方法


我查看了我的代码,显然我通过从我的片段调用this.getActivityForResult来解决这个问题,然后结果返回到我的片段,但我老实告诉你:我不记得写过这篇文章。

尝试在对话框片段触发的活动中实现类似的内容:

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

        Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.myFragmentId);
        fragment.onActivityResult(requestCode, resultCode, data);

下划线活动是将接收onActivityResult的活动,因此您应该能够将其“指向”对话框片段的onActivityResult。

好的,这两件事使其工作:

getActivity.StartActivityForresultGalleryContent,1;您必须添加getActivity 正如你们所说,必须在活动本身中声明onActivityResult。
谢谢大家

到底发生了什么,这与您期望/打算的有什么不同?@frumious不会调用onActivityResult。不清楚您正在显示哪个onActivityResult并打算在其中处理结果。DialogFragment和Activity都有该方法。DiagnogFragment中的onActivityResult将永远不会被调用,因为在用户做出选择后,片段将从活动中分离。您需要在包含活动中处理结果。不需要这样做。onActivityResult应在片段中工作。您必须在片段中调用super.onActivityResult,并且活动不应该在片段捕获onActivityResult之前捕获它。我对此有混合的结果,一些情况下它被片段捕获,另一些情况下它被活动捕获,具体取决于startActivityForResult的上下文。这是我过去的一个解决方案,我认为值得一试,因为还没有找到解决方案。