Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.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
AndroidImageView在片段中_Android_Imageview_Fragment_Android Volley - Fatal编程技术网

AndroidImageView在片段中

AndroidImageView在片段中,android,imageview,fragment,android-volley,Android,Imageview,Fragment,Android Volley,我试图在我的碎片上放一个图像,但是图像没有显示出来。我肯定它昨天还在工作,但现在不行了。感谢您的帮助 此代码在我的片段中: @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); mUser = (User) getArguments().getSerializable(ARGS_USER); } @Override public View on

我试图在我的碎片上放一个图像,但是图像没有显示出来。我肯定它昨天还在工作,但现在不行了。感谢您的帮助

此代码在我的片段中:

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    mUser = (User) getArguments().getSerializable(ARGS_USER);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){

    View v = inflater.inflate(R.layout.fragment_picture_picker, container, false);

    mImageView = v.findViewById(R.id.imageView);
    mSelectImageButton = v.findViewById(R.id.select_image);

    mSelectImageButton.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){


            Intent intent = new Intent();
            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(intent, IMG_REQUEST);
        }
    });

    return v;

}

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


    if(requestCode == IMG_REQUEST && resultCode == Activity.RESULT_OK && data != null){
        Uri path = data.getData();

            try {
                bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), path);
                mImageView.setImageBitmap(bitmap);
                mImageView.setVisibility(View.VISIBLE);
                mUser.setProfilePicture(bitmap);

            }catch(IOException e){
                e.printStackTrace();
            }
    }
}

事实上,你没有使用截击。请更改问题的标题。您正在访问库并在imageView中显示图像。使用以下代码从照相机和多媒体资料中访问图像

if (action.equals("CAMERA")) {
        if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.CAMERA)
                != PackageManager.PERMISSION_GRANTED) {
            // Check Permissions Now
            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.CAMERA}, ACTION_REQUEST_CAMERA);
        } else {
            openCamera();
        }

    } else if (action.equals("GALLERY")) {
        if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE)
                != PackageManager.PERMISSION_GRANTED) {
            // Check Permissions Now
            ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, ACTION_REQUEST_GALLERY);
        } else {
            openGallery();
        }
    }


private void openCamera(){
    Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    getActivity().startActivityForResult(cameraIntent, ACTION_REQUEST_CAMERA);
}

private void openGallery(){
    Intent galleryIntent = new Intent(Intent.ACTION_GET_CONTENT);
    galleryIntent.setType("image/*");
    Intent chooser = Intent.createChooser(galleryIntent, "Choose a Picture");
    getActivity().startActivityForResult(chooser, ACTION_REQUEST_GALLERY);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    System.out.println("OnActivityResult");
    System.out.println("resultCode: "+resultCode+"\n"+"requestCode: "+requestCode);
    ImageOperations operations = new ImageOperations();
    if (resultCode == RESULT_OK) {
        if (requestCode == ACTION_REQUEST_GALLERY) {
            System.out.println("select file from gallery ");
            Uri selectedImageUri = data.getData();
            renderProfileImage(selectedImageUri,operations);
        } else if (requestCode == ACTION_REQUEST_CAMERA) {

            System.out.println("select file from camera ");
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            String name = "profile_pic.png";
            operations.saveImageToInternalStorage(photo,getActivity(),name);
            profile_image.setImageBitmap(photo);
        }
    }
}

private void renderProfileImage(Uri selectedImageUri,ImageOperations operations) {
    Bitmap bitmap = null;
    try {
        bitmap = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), selectedImageUri);
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        bitmap.compress(Bitmap.CompressFormat.JPEG, 50, bytes);
        String name = "profile_pic.png";
        operations.saveImageToInternalStorage(bitmap,getActivity(),name);
        profile_image.setImageBitmap(bitmap);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

private class ImageOperations {
    public boolean saveImageToInternalStorage(Bitmap image, Context context, String name) {

        try {
            // Use the compress method on the Bitmap object to write image to
            // the OutputStream
            FileOutputStream fos = context.openFileOutput("profile_pic.png", Context.MODE_PRIVATE);
            // Writing the bitmap to the output stream
            image.compress(Bitmap.CompressFormat.PNG, 100, fos);
            fos.close();
            return true;
        } catch (Exception e) {
            Log.e("saveToInternalStorage()", e.getMessage());
            return false;
        }
    }

    public Bitmap getThumbnail(Context context,String filename) {

        String fullPath = Environment.getDataDirectory().getAbsolutePath();
        Bitmap thumbnail = null;

        // Look for the file on the external storage
        try {
            if (isSdReadable() == true) {
                thumbnail = BitmapFactory.decodeFile(fullPath + "/" + filename);
            }
        } catch (Exception e) {
            Log.e("Image",e.getMessage());
        }

        // If no file on external storage, look in internal storage
        if (thumbnail == null) {
            try {
                File filePath = context.getFileStreamPath(filename);
                FileInputStream fi = new FileInputStream(filePath);
                thumbnail = BitmapFactory.decodeStream(fi);
            } catch (Exception ex) {
                Log.e("getThumbnail()", ex.getMessage());
            }
        }

        return thumbnail;
    }


    public boolean isSdReadable() {

        boolean mExternalStorageAvailable = false;
        String state = Environment.getExternalStorageState();

        if (Environment.MEDIA_MOUNTED.equals(state)) {
            // We can read and write the media
            mExternalStorageAvailable = true;
            Log.i("isSdReadable", "External storage card is readable.");
        } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
            // We can only read the media
            Log.i("isSdReadable", "External storage card is readable.");
            mExternalStorageAvailable = true;
        } else {
            // Something else is wrong. It may be one of many other
            // states, but all we need to know is we can neither read nor write
            mExternalStorageAvailable = false;
        }

        return mExternalStorageAvailable;
    }
}

行动就像你想做的。ACTION_REQUEST_GALLERY和ACTION_REQUEST_CAMERA使用一些整数常量,如100和101。profileImage是您的ImageView。

Volley?您正在打开文件管理器,以便在ActivityResult上获取图像。是的,谢谢,我被教程弄糊涂了。问题似乎出在下面一行:bitmap=MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(),path);有办法吗?我查过你的密码了。一切似乎都很完美。你在哪里测试你的应用程序?在模拟器或物理设备上。有一次,我尝试在不同的操作系统版本或不同的设备上测试它,并还原正在发生的事情。我正在Nexus5模拟器和我的三星S6上测试它。他们都不工作。我的图像视图有问题吗?我正在片段中尝试您的代码,但图像未显示。编译器警告此行可能返回空指针异常:bitmap=MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(),selectedImageUri);这只是一个警告。您可以忽略它并继续。它绝对可以用。