Android onactivityresult () not being called in fragment

This is my code for calling the result onactivity. I am using a dialog that prompts you to select an image from the gallery or from the camera. The same code works in action, but doesn't work in fragments. I've tried all the previous answers on stackoverflow. Please, help

AlertDialog.Builder builder = new AlertDialog.Builder(
                        getActivity());

                builder.setTitle("Choose Image Source");
                builder.setItems(new CharSequence[] { "Pick from Gallery",
                        "Take from Camera" },
                        new DialogInterface.OnClickListener() {

                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                switch (which) {
                                case 0:

                                    Intent intent = new Intent(
                                            Intent.ACTION_PICK,
                                            android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);

                                    intent.putExtra("crop", "true");
                                    intent.putExtra("aspectX", 1);
                                    intent.putExtra("aspectY", 1);
                                    intent.putExtra("outputX", 250);
                                    intent.putExtra("outputY", 250);

                                    try {

                                        intent.putExtra("return-data", true);
                                        startActivityForResult(
                                                Intent.createChooser(
                                                        intent,
                                                        "Complete action using"),
                                                PICK_FROM_GALLERY);

                                    } catch (ActivityNotFoundException e) {

                                    }

                                    break;

                                case 1:

                                    Intent takePictureIntent = new Intent(
                                            MediaStore.ACTION_IMAGE_CAPTURE);
                                    if (takePictureIntent
                                            .resolveActivity(getActivity()
                                                    .getPackageManager()) != null) {

                                        startActivityForResult(
                                                takePictureIntent,
                                                PICK_FROM_CAMERA);

                                    }

                                    break;

                                default:
                                    break;
                                }
                            }
                        });
                builder.show();





public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub

    try {
        if (requestCode == PICK_FROM_GALLERY) {
            System.out.print("ho ja please");
            Bundle extras2 = data.getExtras();
            if (extras2 != null) {
                bitmap = extras2.getParcelable("data");

                Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
                        bitmap.getHeight(), Config.ARGB_8888);


                dp.setImageBitmap(output);


            }
        }

        if (requestCode == PICK_FROM_CAMERA) {

            Bundle extras = data.getExtras();
            Bitmap bitmap1 = (Bitmap) extras.get("data");

            bitmap = Bitmap.createScaledBitmap(bitmap1, 250, 250, true);

            Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
                    bitmap.getHeight(), Config.ARGB_8888);

            dp.setImageBitmap(output);



        }

      

+3


source to share


2 answers


You can try by calling startActivityForResult with Activity context ie

getActivity().startActivityForResult(Intent.createChooser(
                                                        intent,
                                                        "Complete action using"),
                                                PICK_FROM_GALLERY);

      

I am using the below code to show Image Picker, check this if it helps you -



private static final int SELECT_PICTURE = 1; // Declare this variable

Intent pickIntent = new Intent();
                pickIntent.setType("image/*");
                pickIntent.setAction(Intent.ACTION_GET_CONTENT);

                Intent takePhotoIntent = new Intent(
                        MediaStore.ACTION_IMAGE_CAPTURE);

                String pickTitle = "Select or take picture";

                // strings.xml
                Intent chooserIntent = Intent.createChooser(pickIntent,
                        pickTitle);
                chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
                        new Intent[] { takePhotoIntent });

                getActivity().startActivityForResult(chooserIntent,
                        SELECT_PICTURE);

      

Then in your activity you can use this -

protected void onActivityResult(int requestCode, int resultCode,
            Intent imageReturnedIntent) {
        super.onActivityResult(requestCode, resultCode, imageReturnedIntent);
        if (imageReturnedIntent != null) {
            if (imageReturnedIntent.getData() != null) {
                Uri selectedImage = imageReturnedIntent.getData(); // use this URI for getting and updating the fragment


            }
        }
    }

      

0


source


This is because Activity.startActivityForResult is called in the alert dialog instead of Fragment.startActivityForResult. If you want to fix this behavior, use a fragment reference inside your dialog to call startActivityForResult.



UPD: also as @Ashish Tamrakar mentioned do n't forget to call super.onActivityResult inside your Activity.onActivityResult method if overridden

0


source







All Articles