Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.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 从库中获取图像以在片段中的imageview中设置?_Android_Android Fragments - Fatal编程技术网

Android 从库中获取图像以在片段中的imageview中设置?

Android 从库中获取图像以在片段中的imageview中设置?,android,android-fragments,Android,Android Fragments,如何将gallary中的图像设置为片段中的Imageview?onActivityResult未在片段中调用..这是我在片段中编写的代码 img_user.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(Intent.ACTION_PICK,

如何将gallary中的图像设置为片段中的Imageview?onActivityResult未在片段中调用..这是我在片段中编写的代码

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

            Intent i = new Intent(Intent.ACTION_PICK,
                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            startActivityForResult(i, RESULT_LOAD_IMAGE);


        }
    });


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


        if (data != null) {
            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };
            Cursor cursor = getContext().getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);

            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String picturePath = cursor.getString(columnIndex);
            img_user.setImageBitmap(BitmapFactory.decodeFile(picturePath));
            cursor.close`enter code here`();
        } else {
            Toast.makeText(getActivity(), "Try Again!!", Toast.LENGTH_SHORT)
                    .show();
        }

    }

请找到下面的代码,它将工作。将此添加到片段中

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

//Your stuff

}
 Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                // ******** code for crop image
                i.putExtra("crop", "true");
                i.putExtra("aspectX", 100);
                i.putExtra("aspectY", 100);
                i.putExtra("outputX", 256);
                i.putExtra("outputY", 356);

                try {

                    i.putExtra("return-data", true);
                    startActivityForResult(
                            Intent.createChooser(i, "Select Picture"), 0);
                }catch (ActivityNotFoundException ex){
                    ex.printStackTrace();
                }

我也面临着同样的问题。实际上,
startActivityForResult()
的回调将返回到父活动,因此您需要 从fragment显式调用onActivityResult()函数,如下所示

在父活动类中,重写
onActivityResult()
方法,甚至在片段类中重写相同的方法,并调用以下代码

在父类中:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Fragment fragment = getFragmentManager().findFragmentById(R.id.container);
    fragment.onActivityResult(requestCode, resultCode, data);
}
儿童班: 在imageview上执行图像设置的逻辑

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



        if (data != null) {
            Uri selectedImage = data.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };
            Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null);

                cursor.moveToFirst();
                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                 String picturePath = cursor.getString(columnIndex);
                image.setImageBitmap(BitmapFactory.decodeFile(picturePath));

                cursor.close();
            } else {
                Toast.makeText(getActivity(), "Try Again!!", Toast.LENGTH_SHORT).show();
            }
            super.onActivityResult(requestCode, resultCode, data);
        }

你可以这样做……在你的主要活动中

  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
       //call super 
       super.onActivityResult(requestCode, resultCode, data);
     }
在你的碎片里

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

//Your stuff

}
 Intent i = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                // ******** code for crop image
                i.putExtra("crop", "true");
                i.putExtra("aspectX", 100);
                i.putExtra("aspectY", 100);
                i.putExtra("outputX", 256);
                i.putExtra("outputY", 356);

                try {

                    i.putExtra("return-data", true);
                    startActivityForResult(
                            Intent.createChooser(i, "Select Picture"), 0);
                }catch (ActivityNotFoundException ex){
                    ex.printStackTrace();
                }


非常适合我

请提供更多上下文。什么东西没有按您期望的方式工作?startActivityForResult在Fragment@niralt中工作此代码对我有帮助。我希望它能解决您的问题。我从@ViktorYakunin那里得到了帮助,为什么,你能告诉我吗?在最初的问题中,这是不起作用的。我以前遇到过这个问题,您必须传递请求代码>0,如果没有帮助,请在Activity中找到您的片段并显式调用ActivityResult。我已经在show许多项目中测试了此代码,并且工作正常。