我已经尝试了我为这个问题找到的所有答案,但都没有成功。 我的用户使用 Picasso 从他们的图库中选择要显示在 ImageView 中的图像,但它从未加载到 ImageView 中。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode,resultCode,data);
if(resultCode == RESULT_OK){
if(requestCode == SELECT_PICTURE){
String selectedImageURI = data.getData().getPath();
File imageData = new File(String.valueOf(selectedImageURI));
//selectedImagePath = getPath(selectedImageURI);
if(!image1_exists){
Picasso.with(MemoriesActivity.this).load(imageData).noPlaceholder().centerCrop().fit().into(image1);
}
else if(!image2_exists){
//This is executed
Picasso.with(MemoriesActivity.this).load(imageData).noPlaceholder().centerCrop().fit().into(image2);
}
else if(!image3_exists){
//Picasso.with(MemoriesActivity.this).load(imageData).centerCrop().fit().into(image3);
}
}
}
}
public void addPhoto(View v){
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE);
}
我找不到任何可解释的原因,除了 onActivityResult 和 Picasso 一定有问题,因为我在从后端获取图像时使用完全相同的 Picasso 构建/方法加载图像。
编辑解决方案
public void attachImage(Uri uri, int imageIndex) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 0;
InputStream stream;
try {
stream = getContentResolver().openInputStream(uri);
Bitmap bitmap = BitmapFactory.decodeStream(stream);
Bitmap image_scaled = Bitmap.createScaledBitmap(bitmap, 800, 800 * bitmap.getHeight() / bitmap.getWidth(), false);
if (imageIndex == 0) {
uploadImage(image_scaled, "image1");
handler.get(imageIndex).loadImageFromUri(this,(ImageView) findViewById(R.id.image1),uri);
handler.get(imageIndex).loadEnlargedImageFromUri(this,image1_full,uri);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
所以我创建了那个方法(它正在构建中,但解决方案保持不变)并在 onActivityResult 中这样调用它:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == SELECT_PICTURE) {
Uri selectedImage = data.getData();
int imageIndex = getFirstNonExistingImage();
if (imageIndex == 0) {
attachImage(selectedImage,imageIndex);
}
}
}
}
我使用自定义 Picasso 类 (handler.loadImageFromUri) 加载 URI,但原理相同。
最佳答案
已解决,方法是创建一个外部方法并在 onActivityResult 内部执行该方法。不知道为什么,但它奏效了。
关于android - picasso 没有从画廊加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36426034/