CardBannerDemo
CardBannerDemo copied to clipboard
在fragment中使用的时候有几率崩溃,我自己倒是没出现过这种情况,但是的确有用户碰到了,难以定位
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使用中资源被回收了导致的错误
遇到同样的问题
try catch大法好 在CardView里面的findViewAtCenter当返回null的时候就会崩溃,虽然我并不知道fragment里什么时候什么情况下会返回null
稍微做了点修改,不知道对整体有什么影响,至少不会崩溃了 public View findViewAtCenter() { if (getLayoutManager().canScrollVertically()) { return findViewAt(0, getHeight() / 2); } else { return findViewAt(getWidth() / 2, 0); } }
修改了之后还是会出现问题 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)
有什么其他解决方案吗
修改了之后还是会出现问题 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给他包括起来 如果报错了 就默认返回第一个
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后执行,我这样修改的
我也遇到了, 是因为这个东西找不到:com.xuezj.cardbanner.R;