0

我正在尝试实现一个画廊,在其中我以 JSON 文件的形式获取图像(拇指)的 URL。我将 json 解析为 ArrayLists thmb,它以字符串的形式保存缩略图图像的 URL。JSON 和 URL 字符串一切正常。

我想在画廊视图中加载缩略图。为此,我正在尝试下载图像并将它们保存在 ArrayList 中。相同的代码是:

ArrayList<String> thmb;
ArrayList<Bitmap> b;
DownloadImageTask dit = new DownloadImageTask();
for(int j=0;j<thmb.size();j++){
        Log.d("REQ","REQUESTING"+thmb.get(j));
        dit.execute(thmb.get(j).toString());
        Log.d("BR", "BITMAP RECIEVED");
        Bitmap bit = null;
        try{
            bit=dit.get();
            b.add(bit);
        }catch(Exception e){
            Log.d("LLL", e.getMessage());
        }
    }

类下载图像任务:

 public class DownloadImageTask extends AsyncTask <String, Bitmap, Bitmap> {
        protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap img = null;
            try {
                InputStream in = new java.net.URL(urldisplay).openStream();
                img = BitmapFactory.decodeStream(in);
                return img;
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                return null;
            }
        }        
        protected void onPostExecute(Bitmap imx) {
                    super.onPostExecute(imx);
        }
    }

我无法将位图保存在 ArrayList 中,并且应用程序意外停止!谁能告诉我为什么会这样。LogCat 说:

12-22 18:48:07.398: D/BR(6129): BITMAP RECIEVED
12-22 18:48:08.349: D/AndroidRuntime(6129): Shutting down VM
12-22 18:48:08.349: W/dalvikvm(6129): threadid=1: thread exiting with uncaught exception (group=0x415e9d88)
12-22 18:48:08.359: E/AndroidRuntime(6129): FATAL EXCEPTION: main
12-22 18:48:08.359: E/AndroidRuntime(6129): Process: com.example.videogallery, PID: 6129
12-22 18:48:08.359: E/AndroidRuntime(6129): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.videogallery/com.example.videogallery.Stream}: java.lang.NullPointerException: println needs a message
12-22 18:48:08.359: E/AndroidRuntime(6129):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2237)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2286)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at android.app.ActivityThread.access$800(ActivityThread.java:144)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at android.os.Handler.dispatchMessage(Handler.java:102)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at android.os.Looper.loop(Looper.java:212)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at android.app.ActivityThread.main(ActivityThread.java:5135)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at java.lang.reflect.Method.invokeNative(Native Method)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at java.lang.reflect.Method.invoke(Method.java:515)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at dalvik.system.NativeStart.main(Native Method)
12-22 18:48:08.359: E/AndroidRuntime(6129): Caused by: java.lang.NullPointerException: println needs a message
12-22 18:48:08.359: E/AndroidRuntime(6129):     at android.util.Log.println_native(Native Method)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at android.util.Log.d(Log.java:139)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at com.futurristic.videogallery.Stream.onCreate(Stream.java:90)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at android.app.Activity.performCreate(Activity.java:5231)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
12-22 18:48:08.359: E/AndroidRuntime(6129):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2201)
12-22 18:48:08.359: E/AndroidRuntime(6129):     ... 11 more
4

2 回答 2

1

您在某处有空的 Log 语句。所以空指针。看看 Stream.java 类的第 90 行。

更多帮助:

NullPointerException:println 需要 android 中的消息

NullPointerException:println 需要一条消息

Android java.lang.NullPointerException: println 需要一条消息

于 2014-12-22T14:18:56.690 回答
0

基于 Logcat,你在 thmb.get(j) 中有 NPE,所以显示它填充的部分。

于 2014-12-22T14:14:09.123 回答