![](/img/trans.png)
[英]java.lang.NoSuchMethodError: No static method with(Landroid/content/Context;)Lcom/squareup/picasso/Picasso;
[英]java.lang.NoSuchMethodError: No static method with(Landroid/content/Context;)
您好,我正在尝试使用此库中的https://github.com/Swati4star/Images-to-PDF ImagesToPDF 函数。 我已经在我的应用程序中添加了所有需要的类。
现在,在添加 ImagesToPDF 函数之前,我已经在我的应用程序中使用了 picasso。
现在添加它后我收到以下错误:
java.lang.NoSuchMethodError: No static method with(Landroid/content/Context;)Lcom/squareup/picasso/Picasso; in class Lcom/squareup/picasso/Picasso; or its super classes (declaration of 'com.squareup.picasso.Picasso' appears in /data/app/com.example.onboardingversion2-sJCkixxNOR2KPNLmYYdvpQ==/base.apk!classes2.dex)
在以下函数中出错:
/**
* Opens Matisse activity to select Images
*/
private void selectImages() {
Matisse.from(this)
.choose(MimeType.ofImage(), false)
.countable(true)
.capture(true)
.captureStrategy(new CaptureStrategy(true, AUTHORITY_APP))
.maxSelectable(1000)
.imageEngine(new PicassoEngine())
.forResult(INTENT_REQUEST_GET_IMAGES);
}
应用程序崩溃并给出错误。 我添加了应用程序并设置了 Multidex
public class MyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(base);
}
}
我还在 gradle 中添加了 multidexEnabled true。 仍然抛出错误。 请帮忙。 谢谢你。
Picasso 大约 4 年没有更新,它有很多问题。 也许你应该切换到Glide
问题出在线上
.imageEngine(new PicassoEngine())
其中 PicassoEngine() 类使用 Picasso.with(context).... 已弃用的模块。 解决方案是您必须创建一个新类,将其命名为 NewPicassoEngine(),如下所示;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.widget.ImageView;
import com.squareup.picasso.Picasso;
import com.zhihu.matisse.engine.ImageEngine;
public class NewPicassoEngine implements ImageEngine {
@Override
public void loadThumbnail(Context context, int resize, Drawable placeholder, ImageView imageView, Uri uri) {
Picasso.get().load(uri).placeholder(placeholder)
.resize(resize, resize)
.centerCrop()
.into(imageView);
}
@Override
public void loadGifThumbnail(Context context, int resize, Drawable placeholder, ImageView imageView,
Uri uri) {
loadThumbnail(context, resize, placeholder, imageView, uri);
}
@Override
public void loadImage(Context context, int resizeX, int resizeY, ImageView imageView, Uri uri) {
Picasso.get().load(uri).resize(resizeX, resizeY).priority(Picasso.Priority.HIGH)
.centerInside().into(imageView);
}
@Override
public void loadGifImage(Context context, int resizeX, int resizeY, ImageView imageView, Uri uri) {
loadImage(context, resizeX, resizeY, imageView, uri);
}
@Override
public boolean supportAnimatedGif() {
return false;
}}
并将其用作;
private void selectImages() {
Matisse.from(this)
.choose(MimeType.ofImage(), false)
.countable(true)
.capture(true)
.captureStrategy(new CaptureStrategy(true, AUTHORITY_APP))
.maxSelectable(1000)
.imageEngine(new NewPicassoEngine())
.forResult(INTENT_REQUEST_GET_IMAGES);
}
这将解决您的问题。
GlideEngine()使用最新的依赖为我工作
fun selectImages(frag: Fragment?, requestCode: Int) {
Matisse.from(frag)
.choose(MimeType.ofImage(), false)
.countable(true)
.capture(true)
.captureStrategy(CaptureStrategy(true, AUTHORITY_APP))
.maxSelectable(1000)
.imageEngine(GlideEngine())
.forResult(requestCode)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.