Search code examples
androidimageviewandroid-kenburnsview

KenBurnsView - Load image from a url returns NPE


I'm trying to use KenBurnsView library into my ImageView to get the Ken Burn's effect. But it returns null pointer exception each time I want to load an image from a url using Image Loader.

Here is the stack trace:

06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ java.lang.NullPointerException
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.flaviofaria.kenburnsview.MathUtils.getRectRatio(MathUtils.java:44)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.flaviofaria.kenburnsview.RandomTransitionGenerator.generateRandomRect(RandomTransitionGenerator.java:93)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.flaviofaria.kenburnsview.RandomTransitionGenerator.generateNextTransition(RandomTransitionGenerator.java:64)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.flaviofaria.kenburnsview.KenBurnsView.startNewTransition(KenBurnsView.java:207)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.flaviofaria.kenburnsview.KenBurnsView.handleImageChange(KenBurnsView.java:280)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.flaviofaria.kenburnsview.KenBurnsView.setImageDrawable(KenBurnsView.java:140)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.nostra13.universalimageloader.core.imageaware.ImageViewAware.setImageDrawable(ImageViewAware.java:171)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.nostra13.universalimageloader.core.ImageLoader.displayImage(ImageLoader.java:252)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.nostra13.universalimageloader.core.ImageLoader.displayImage(ImageLoader.java:357)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.nostra13.universalimageloader.core.ImageLoader.displayImage(ImageLoader.java:335)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.kedai.baucar.fragment.HomeFragment$2.onResponse(HomeFragment.java:513)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.kedai.baucar.fragment.HomeFragment$2.onResponse(HomeFragment.java:450)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.kedai.baucar.utils.GsonRequest.deliverResponse(GsonRequest.java:106)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.kedai.baucar.fragment.HomeFragment$1.deliverResponse(HomeFragment.java:425)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.kedai.baucar.fragment.HomeFragment$1.deliverResponse(HomeFragment.java:420)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:733)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at android.os.Looper.loop(Looper.java:136)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5001)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
06-20 16:05:57.485    7442-7442/com.kedai.baucar W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
06-20 16:05:57.495    7442-7442/com.kedai.baucar W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)

Also, I've found a similar question here, but this one instead loading from a url, it loads on run-time.

I've tried the solution by adding updateDrawableBounds(); inside setImageResource(int resId) method, still couldn't make it.

Has anyone ever experienced this before? How do you fix this?


Solution

  • I'm the author of the library and I just pushed a few changes that I believe that will fix your problem. Please download the latest version (v1.0.3) and let me know if it happens again.