Closed FrankLove closed 4 years ago
如果不涉及到商业机密的话请把异常贴全
如果不涉及到商业机密的话请把异常贴全 @panpf 在activity里面每次切换显示图片都这么调用的话 mImageView.displayImage(filepath).getOptions().setLoadingImage(R.drawable.icon_default_image); 第二次就会刚才的错误 如果把占位图单独拿出来设置就正常 mImageView.getOptions().setLoadingImage(R.drawable.icon_default_image); mImageView.displayImage(filepath)
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.lancoo.listenclass, PID: 17686 java.lang.NullPointerException: Attempt to invoke virtual method 'me.panpf.sketch.request.DisplayOptions me.panpf.sketch.request.DisplayRequest.getOptions()' on a null object reference at com.test.fragment.ImageviewFragment.onCreateView(ImageviewFragment.java:67) at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852) at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:802) at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2625) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2411) at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2366) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2273) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:733) at android.os.Handler.handleCallback(Handler.java:761) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:156) at android.app.ActivityThread.main(ActivityThread.java:6617) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
首先设置 options 一定是要在 displayImage 之前才会生效
其次 displayImage 方法返回的是 DisplayRequest 是不支持修改 Options 的,你这么写有很大问题,是我 API 设计的问题让你误以为可以这样用,后续我会去掉 displayImage 的返回值
你这里的问题应该是第二次 displayImage 的时候可能是由于缺少 url 导致 commit 失败,返回了 null 的 DisplayRequest,你可以 debug 一下看看 displayImage 内部调用的 commit 方法,找到是哪里校验不过返回了 null
因为displayoptions说明文档里面并没有详细说明displayoptions应该怎么调用,所以我只能猜测着调用了。 我把他改成这样就没问题了 mImageView.getOptions().setLoadingImage(R.drawable.icon_default_image); mImageView.displayImage(filepath) @panpf
在fragment里面使用此方法 mImageView.displayImage(filepath).getOptions().setLoadingImage(R.drawable.icon_default_image); getOptions()第二次显示图片的时候提示 java.lang.NullPointerException: Attempt to invoke virtual method 'me.panpf.sketch.request.DisplayOptions me.panpf.sketch.request.DisplayRequest.getOptions()' on a null object reference