我认为这是一个库兼容性问题,但值得尝试一下。
我正试图在我的应用程序中实现一个图像滑块,而毕加索图书馆正在尝试,它给了我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);
我的LOGCAT
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)
正如我所发现的,这是在开发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
库一起使用,而不会出现任何问题。
如果有人面临这个问题,创建库的人damijana将不再支持它。
但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
我在旧版本的Picasso2.5.2
上遇到了这个问题。通过升级到新版本解决了问题
implementation 'com.squareup.picasso:picasso:2.71828'
别忘了,所有给毕加索的电话现在都必须从以下位置更新:
旧语法
Picasso.with(context)
.load(url)
.into(imageView)
到新语法
Picasso.get()
.load(url)
.into(imageView)
希望它也适用于你:-(