java.lang.NoSuchMethodError:没有使用(Landroid / content / Context;)Lcom / squareup / picasso / Picasso;的静态方法;

时间:2018-11-08 18:58:15

标签: java android

我认为这是一个库兼容性问题,但值得一试。

我正在尝试在我的应用中实现图片滑块,而Picasso库变得合适,它给了我noSuchMethodError

好的,我要隐藏两个字符串,一个是在滑块上显示的名称,另一个是活动类型,然后放入一个哈希映射和键拆分键,然后加载到.image中。

 for (String key : image_list.keySet()   ) {

                String[] keySplit = key.split("@@@");
                String nameOfDeal = keySplit[0];
                String typeOfActivity = keySplit[1];

我登录nameOfDeal并且image_list.get(key)的格式正确时。有任何想法吗?下面是我的代码。

我初始化了SliderLayout

 //Create TextSlider
 final TextSliderView textSliderView = new TextSliderView(getBaseContext());
  textSliderView.description(nameOfDeal)
                        .image(image_list.get(key))
                        .setScaleType(BaseSliderView.ScaleType.Fit)
                        .setOnSliderClickListener(new 
   BaseSliderView.OnSliderClickListener() {
   @Override
   public void onSliderClick(BaseSliderView slider) 
    {

  Intent intent = new Intent(MainActivity.this, main_intermediate.class);

   intent.putExtras(textSliderView.getBundle());
                                startActivity(intent);
 }
});

 textSliderView.bundle(new Bundle());                
 textSliderView.getBundle().putString("uniqueID",typeOfActivity);
 mSlider.addSlider(textSliderView);

我的日志

11-08 20:51:01.456 1575-1575/com.example.karam.nlcg E/AndroidRuntime: FATAL 
EXCEPTION: main
Process: com.example.karam.nlcg, PID: 1575
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.karam.nlcg- 
hOIyNfHuyD9O29FGhzu4EQ==/split_lib_dependencies_apk.apk)
    at com.daimajia.slider.library. 
 SliderTypes.BaseSliderView.bindEventAndShow(BaseSliderView.java:210)
    at com.daimajia.slider.library.' 
SliderTypes.TextSliderView.getView(TextSliderView.java:25)
    at com.daimajia.slider.library.
 SliderAdapter.instantiateItem(SliderAdapter.java:81)
    at com.daimajia.slider.library.
 Tricks.InfinitePagerAdapter.instantiateItem(InfinitePagerAdapter.java:54)
    at com.daimajia.slider.library.Tricks
.ViewPagerEx.addNewItem(ViewPagerEx.java:848)
    at com.daimajia.slider.library.Tricks.
ViewPagerEx.populate(ViewPagerEx.java:998)
    at com.daimajia.slider.library.Tricks.
ViewPagerEx.setCurrentItemInternal(ViewPagerEx.java:562)
    at c 

 om.daimajia.slider.library.Tricks.
  ViewPagerEx.setCurrentItemInternal(ViewPagerEx.java:526)
    at com.daimajia.slider.library.Tricks.ViewPagerEx.
setCurrentItem(ViewPagerEx.java:507)
    at 

com.daimajia.slider.library.Indicators.
PagerIndicator$1.onChanged(PagerIndicator.java:411)
    at android.database.DataSetObservable.notifyChanged
 (DataSetObservable.java:37)
    at 

 android.support.v4.view.PagerAdapter.
notifyDataSetChanged(PagerAdapter.java:293)
    at 
 com.daimajia.slider.library.SliderAdapter.addSlider(SliderAdapter.java:28)
    at 
  com.daimajia.slider.library.SliderLayout.addSlider(SliderLayout.java:237)
    at 
com.example.karam.nlcg.MainActivity$3.onDataChange(MainActivity.java:292)
    at com.google.firebase.database.core.ValueEventRegistration.
 fireEvent(com.google.firebase:firebase-database@@16.0.4:75)
    at com.google.firebase.database.core.view.DataEvent.fire
 (com.google.firebase:firebase-database@@16.0.4:63)
    at 


com.google.firebase.database.core.view.EventRaiser$1
.run(com.google.firebase:fir 
ebase-database@@16.0.4:55)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6938)
    at java.lang.reflect.Method.invoke(Native Method)
    at 
com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

3 个答案:

答案 0 :(得分:2)

如果有人遇到这个问题,达米亚纳(Danijana),图书馆的创建者不再支持它。

但是firdausmaulan是一名开发人员,他创建了一个与damijana没什么不同的库,但是它使用glide而不是picasso。

链接到github项目: https://github.com/firdausmaulan/GlideSlider

链接至示例: https://github.com/firdausmaulan/GlideSlider-Example/blob/feature/1.3.2/app/src/main/java/com/glide/slider/example/MainActivity.java

答案 1 :(得分:0)

我在使用较旧版本的毕加索2.5.2时遇到此问题。通过升级到较新版本解决了该问题

implementation 'com.squareup.picasso:picasso:2.71828'

别忘了现在必须从以下位置更新对毕加索的所有通话:

旧语法

Picasso.with(context)
    .load(url)
    .into(imageView)

新语法

Picasso.get()
    .load(url)
    .into(imageView)

希望它也对您有用:-)

答案 2 :(得分:0)

当我发现这是实际的问题时,开发com.daimajia.slider.library 他们在库中使用了com.squareup.picasso,但是com.daimajia.slider.library开发人员在version 1.1.5@aar之后停止了更新,因此该库需要com.squareup.picasso库的旧版本

因此,您不能将com.daimajia.slider.library与最新的(2.71828) com.squareup.picasso (如果您同时使用两个库),则可以使用picasso 2.3.2 or 2.5.2 daimajia库中没有任何问题。