Android 从库中获取图像以在片段中的imageview中设置?
如何将gallary中的图像设置为片段中的Imageview?onActivityResult未在片段中调用..这是我在片段中编写的代码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,
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许多项目中测试了此代码,并且工作正常。