CardBannerDemo icon indicating copy to clipboard operation
CardBannerDemo copied to clipboard

在fragment中使用的时候有几率崩溃,我自己倒是没出现过这种情况,但是的确有用户碰到了,难以定位

Open chlhrssj opened this issue 6 years ago • 6 comments

com.xuezj.cardbanner.view.CardView.getCurrentItem(CardView.java:160)  com.xuezj.cardbanner.CardBanner$2.run(CardBanner.java:195) com.xuezj.cardbanner.d$c.run(WeakHandler.java:205) android.os.Handler.handleCallback(Handler.java:790) android.os.Handler.dispatchMessage(Handler.java:99)

这是报错信息,我也不知道是否在fragment使用中资源被回收了导致的错误

chlhrssj avatar Dec 25 '18 02:12 chlhrssj

遇到同样的问题

choslow avatar Mar 04 '19 02:03 choslow

try catch大法好 在CardView里面的findViewAtCenter当返回null的时候就会崩溃,虽然我并不知道fragment里什么时候什么情况下会返回null

稍微做了点修改,不知道对整体有什么影响,至少不会崩溃了 public View findViewAtCenter() { if (getLayoutManager().canScrollVertically()) { return findViewAt(0, getHeight() / 2); } else { return findViewAt(getWidth() / 2, 0); } }

chlhrssj avatar Mar 06 '19 06:03 chlhrssj

修改了之后还是会出现问题 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.view.View.getTag(int)' on a null object reference at com.xuezj.cardbanner.view.CardView.getCurrentItem(CardView.java:160) at com.xuezj.cardbanner.CardBanner$2.run(CardBanner.java:195) at com.xuezj.cardbanner.i$c.run(WeakHandler.java:205) at android.os.Handler.handleCallback(Handler.java:809) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:166) at android.app.ActivityThread.main(ActivityThread.java:7555) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:469) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:963)

有什么其他解决方案吗

itzhaokun avatar Mar 21 '19 05:03 itzhaokun

修改了之后还是会出现问题 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.view.View.getTag(int)' on a null object reference at com.xuezj.cardbanner.view.CardView.getCurrentItem(CardView.java:160) at com.xuezj.cardbanner.CardBanner$2.run(CardBanner.java:195) at com.xuezj.cardbanner.i$c.run(WeakHandler.java:205) at android.os.Handler.handleCallback(Handler.java:809) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:166) at android.app.ActivityThread.main(ActivityThread.java:7555) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:469) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:963)

有什么其他解决方案吗

直接用try给他包括起来 如果报错了 就默认返回第一个

zhaoweiguo5505 avatar Jul 24 '19 09:07 zhaoweiguo5505

public int getCurrentItem() { mCurrentCenterChildView = findViewAtCenter(); if (mCurrentCenterChildView == null || mCurrentCenterChildView.getTag(R.id.key_item) == null) { return 0; } else { return (int) mCurrentCenterChildView.getTag(R.id.key_item); } }

fragment里面 适配器会setTag后执行,我这样修改的

chaoshenzhilu avatar Dec 20 '19 06:12 chaoshenzhilu

我也遇到了, 是因为这个东西找不到:com.xuezj.cardbanner.R;

kgdnone avatar Apr 03 '20 20:04 kgdnone