onActivityResult is not being called in Fragment

后端 未结 30 2768
忘了有多久
忘了有多久 2020-11-21 04:28

The activity hosting this fragment has its onActivityResult called when the camera activity returns.

My fragment starts an activity for a result with th

30条回答
  •  梦谈多话
    2020-11-21 05:06

    public class takeimage extends Fragment {
    
        private Uri mImageCaptureUri;
        private static final int PICK_FROM_CAMERA = 1;
        private static final int PICK_FROM_FILE = 2;
        private String mPath;
        private ImageView mImageView;
        Bitmap bitmap = null;
        View view;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            view = inflater.inflate(R.layout.activity_send_image, container, false);
            final String[] items = new String[] { "From Camera", "From SD Card" };
            mImageView = (ImageView)view.findViewById(R.id.iv_pic);
            ArrayAdapter adapter = new ArrayAdapter(getActivity(), android.R.layout.select_dialog_item, items);
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setTitle("Select Image");
    
            builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int item) {
                    if (item == 0) {
                        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                        File file = new File(Environment.getExternalStorageDirectory(), "tmp_avatar_"
                            + String.valueOf(System.currentTimeMillis())
                            + ".jpg");
                        mImageCaptureUri = Uri.fromFile(file);
    
                        try {
                            intent.putExtra(
                                android.provider.MediaStore.EXTRA_OUTPUT,
                                mImageCaptureUri);
                            intent.putExtra("return-data", true);
    
                            getActivity().startActivityForResult(intent,
                                PICK_FROM_CAMERA);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
    
                        dialog.cancel();
                    } else {
                        Intent intent = new Intent();
    
                        intent.setType("image/*");
                        intent.setAction(Intent.ACTION_GET_CONTENT);
    
                        getActivity().startActivityForResult(
                            Intent.createChooser(intent,
                                "Complete action using"), PICK_FROM_FILE);
                    }
                }
            });
            final AlertDialog dialog = builder.create();
    
            Button show = (Button) view.findViewById(R.id.btn_choose);
            show.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    // Switch the tab content to display the list view.
                    dialog.show();
                }
            });
    
        return view;
        }
    
        @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
    
            if (resultCode != Activity.RESULT_OK)
                return;
    
            if (requestCode == PICK_FROM_FILE) {
                mImageCaptureUri = data.getData();
                // mPath = getRealPathFromURI(mImageCaptureUri); //from Gallery
    
                if (mPath == null)
                    mPath = mImageCaptureUri.getPath(); // from File Manager
    
                if (mPath != null)
                    bitmap = BitmapFactory.decodeFile(mPath);
            } else {
                mPath = mImageCaptureUri.getPath();
                bitmap = BitmapFactory.decodeFile(mPath);
            }
            mImageView.setImageBitmap(bitmap);  
        }
    
        public String getRealPathFromURI(Uri contentUri) {
            String [] proj = {MediaStore.Images.Media.DATA};
            Cursor cursor = managedQuery(contentUri, proj, null, null,null);
    
            if (cursor == null) return null;
    
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            cursor.moveToFirst();
            return cursor.getString(column_index);
        }
    } 
    

提交回复
热议问题