butterknife zelezny threw an uncaught ArrayIndexOutOfBoundsException
Butterknife突然就爆出了這個問題,剛開始以為是注解工具出了問題,就使用了findviewbyid,后來一個個打的時候才發(fā)現(xiàn)是我的id寫錯了,如果你也是這樣就檢查一下你的id是不是下劃線為第一個
Error:Could not find method compile() for arguments [com.android.support:cardview-v7:25.3.1] on DefaultExternalModuleDependency{group='com.android.support', name='appcompat-v7', version='25.3.1', configuration='default'} of type org.gradle.api.internal.artifacts.dependencies.DefaultExternalModuleDependency.
Please install the Android Support Repository from the Android SDK Manager.
<a href="openAndroidSdkManager">Open Android SDK Manager</a>
解決辦法:用著用著就這樣了,剛開始真不知道為什么,后來看到build.gradl里面,compile里面的都疊成一行了,好吧,他說找不到"not find method compile() for arguments" 原來是這個原因,將其加上換行就好了,
mob分享,本來上線的時候是沒問題的,后來莫名其妙魅族手機分享失敗,小米手機確實成功的,這個就讓人很坑爹,小米手機沒事.魅族手機有問題.這就讓我一直找魅族手機的原因,后來網(wǎng)上說圖片的原因.我就改了規(guī)格,也叫后臺改了圖片,但是還是無濟于事.一直分享失敗,最后oks.setCallback才知道,一直顯示NullPointerException Reader<init>異常,實在不知道,最后找了好久的原因,才知道是后臺的原因...后臺傳過來的圖片鏈接是http鏈接,這個過程中Mob會自己下載圖片,然后再分享出去,但是我們后臺給的鏈接重定向了,是的重定向了,然后mob就下載不下來,就一直報空指針異常,好吧.最后叫他改一下鏈接就好了
分割線-------------------------------------------------------------------------------
Process: com.cdzb.milier, PID: 10368
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 15(offset:15).state:30
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5504)
at android.support.v7.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:282)
at android.support.v7.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:336)
at android.support.v7.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:349)
at android.support.v7.widget.GapWorker.prefetch(GapWorker.java:356)
at android.support.v7.widget.GapWorker.run(GapWorker.java:387)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6360)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)
使用recycleview的時候都會出現(xiàn)這個問題,本身就是一個頻繁刷新的一個控件,這個是他本身內(nèi)部的bug,RecyclerView是Android-support-v7-21版本中新增的一個Widget澎粟,RecyclerView在刷新數(shù)據(jù)的時候會出現(xiàn)異常,看報錯就知道,并沒有報應(yīng)用層的bug,
有2個解決辦法:
- 捕獲了異常,防止crash掉,這個是谷歌recycleview導(dǎo)致的,所以這樣做能解決這個問題,在創(chuàng)建recycleview的
LinearLayoutManager的時候替換成LinearLayoutManagerWrapper,
public class LinearLayoutManagerWrapper extends LinearLayoutManager {
public LinearLayoutManagerWrapper(Context context) {
super(context);
}
public LinearLayoutManagerWrapper(Context context, int orientation, boolean reverseLayout) {
super(context, orientation, reverseLayout);
}
public LinearLayoutManagerWrapper(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
public void onLayoutChildren(RecyclerView.Recycler recycler, RecyclerView.State state) {
try {
super.onLayoutChildren(recycler, state);
} catch (IndexOutOfBoundsException e) {
e.printStackTrace();
System.out.print("recycle的異常捕獲了");
}
}
}
2.如果這樣還是不能解決問題,在每次改動adapter的數(shù)據(jù)的時候就用Adapter.notifyDataSetChanged();