Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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
Android Can';t替换来自照相机或多媒体资料的图像的图像视图(它不工作)_Android_Android Camera_Android Gallery - Fatal编程技术网

Android Can';t替换来自照相机或多媒体资料的图像的图像视图(它不工作)

Android Can';t替换来自照相机或多媒体资料的图像的图像视图(它不工作),android,android-camera,android-gallery,Android,Android Camera,Android Gallery,当我显示我的多媒体资料中的图像并选择了一个图像时,我无法替换多媒体资料或相机中其他图像的图像。这不会替换图像。另外,当我用相机拍摄图像时,它不会显示,我也不能拍照。我想替换片段中的图像,这是片段的代码。在摄像机的例子中,我认为这可能是因为我没有正确添加摄像机的清单,但后来我看到了这一点,我认为这是正确的 public class SettingsFragment extends Fragment { private ImageView ivImage; private Strin

当我显示我的多媒体资料中的图像并选择了一个图像时,我无法替换多媒体资料或相机中其他图像的图像。这不会替换图像。另外,当我用相机拍摄图像时,它不会显示,我也不能拍照。我想替换片段中的图像,这是片段的代码。在摄像机的例子中,我认为这可能是因为我没有正确添加摄像机的清单,但后来我看到了这一点,我认为这是正确的

public class SettingsFragment extends Fragment {
    private ImageView ivImage;
    private String userChoosenTask;
    private int REQUEST_CAMERA = 0, SELECT_FILE = 1;
    private Button btnSelect;
    public SettingsFragment() {
    }
    private void cameraIntent(){
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, REQUEST_CAMERA);
    }
    private void galleryIntent(){
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Selecciona una imagen"), SELECT_FILE);
    }
    @SuppressWarnings("deprecation")
    public void onSelectFromGalleryResult(Intent data){
        Bitmap bm = null;
        if(data != null){
            try{
                bm = MediaStore.Images.Media.getBitmap(getActivity().getApplicationContext().getContentResolver(),data.getData());
            }catch(IOException e){
                e.printStackTrace();
            }
        }
        ivImage.setImageBitmap(bm);
    }

    private void onCaptureImageResult(Intent data){
        Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
        ByteArrayOutputStream bytes = new ByteArrayOutputStream();
        thumbnail.compress(Bitmap.CompressFormat.JPEG,90, bytes);
        File destination = new File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".jpg");
        FileOutputStream fo;
        try{
            destination.createNewFile();
            fo = new FileOutputStream(destination);
            fo.write(bytes.toByteArray());
            fo.close();
        }catch (FileNotFoundException e){
            e.printStackTrace();
        }catch (IOException e){
            e.printStackTrace();
        }
        ivImage.setImageBitmap(thumbnail);
    }private void SelectImage(){
        final CharSequence[] items = {"Realizar foto", "Selecciona una imagen", "Cancelar"};
        AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
        builder.setTitle("Añadir foto");
        builder.setItems(items, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int item) {
                boolean result = Utility.checkPermission(getContext());
                if(items[item].equals("Realizar una foto")){
                    userChoosenTask = "Realizar una foto";
                    if(result)
                        cameraIntent();
                }else if(items[item].equals("Selecciona una imagen")){
                    userChoosenTask = "Selecciona una imagen";
                    if(result){
                        galleryIntent();
                    }
                }else if(items[item].equals("Cancelar")){
                    dialog.dismiss();
                }
            }
        });
        builder.show();
    }
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        final View rootView = inflater.inflate(R.layout.fragment_perfil, container, false);
        final Fragment settings = new Sett();
        final Fragment datospersonales = new datospersonales();
        btnSelect = (Button) rootView.findViewById(R.id.btnSelectPhoto);


        final FragmentManager fragmentManager = getFragmentManager();
        final ImageButton optsel = (ImageButton) rootView.findViewById(R.id.optsel);
        final Button alerta = (Button) rootView.findViewById(R.id.alerta);

        btnSelect.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                SelectImage();
            }
        });


        optsel.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.fragmentContainer, settings).commit();
            }
        });
        alerta.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                Notification();
            }
        });
        ivImage = (ImageView) rootView.findViewById(R.id.ivImage);
        return rootView;
    }
    public void Notification(){
        NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(getContext())
                .setDefaults(NotificationCompat.DEFAULT_ALL)
                .setSmallIcon(R.mipmap.ic_launcher)
                .setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher))
                .setContentTitle("C4Growth")
                .setContentText("Alerta bullying activada");
        NotificationManager notificationManager = (NotificationManager) getContext().getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(1,notificationBuilder.build());
    }


    public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults){
        switch (requestCode){
            case Utility.MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE:
                if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    if(userChoosenTask.equals("Realizar una foto")){
                        cameraIntent();
                    }else if(userChoosenTask.equals("Selecciona una imagen")){
                        galleryIntent();
                    }
                }else{

                }
                break;
        }
    }
    public void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode,resultCode,data);
        if(requestCode == Activity.RESULT_OK){
            if(requestCode == SELECT_FILE){
                onSelectFromGalleryResult(data);
            }else if(requestCode == REQUEST_CAMERA){
                onCaptureImageResult(data);
            }
        }
    }

}

我一直在看你的代码!这是你能用它做的!把事情做完

第1步: 重写onActvityCreated()的一个方法,并在那里使用click listener,然后使用父活动的上下文在片段中获取其onActivityResult方法,这样就可以了

检查这个太它有很好的解决方案,在它,我试图告诉

第二步:

要了解更多信息,请查看此博客,我发现它有点帮助 这要归功于“雷克斯圣约翰”


注意:尝试此操作,如果不起作用,请发表评论,我将与您一起尝试解决^ ^

从您的代码中,我可以看到您正在尝试获取图片,然后将其保存在图库中,然后在ImageView中重新蚀刻!你能不能再分享一些代码或logcat错误!请。我有一个建议的解决方案,您正在获取正确的数据!那里没有bug,但您正在尝试从imageResult获取图像到片段!我可以看到您正在片段的视图方法中使用click listener!这是可行的,但你应该尝试在logcat中的ONACTIVITYCREATED Fragments方法中使用你的点击代码。我没有看到任何重要的错误,当我从我的图库中选择照片时,这个选择正确,但没有替换旧照片,我想替换这个片段中的照片,我如何解决?如果我在oncreate中尝试替换的click代码,应用程序崩溃@rizwan AttachOverride片段中名为“onActivityCreated”的另一个方法,并将click listener放在那里,然后重试,我在onActivityCreated的片段调用中没有任何方法,只有onCreated和onCreatedView:(@rizwan atta,我把这个方法放在哪里了?我打算按照解决方案来做,但我的片段仍然不能正确工作:(@rizwan atta在我开始使用startActivityForResult(intent,REQUEST\u CAMERA)之前,在cameraintent()和GalleryContent()中对我的代码做了一些更改;现在我有了frag.startActivityForResult(intent,REQUEST\u CAMERA);我没有发现错误:(@rizwan atta)