1

jpg ファイルをダウンロードしようとすると、nullPointerException が発生します。これは AsyncTask メソッドで行われますが、おそらく非同期であるため、デバッガーでプログラム フローをトレースできません。私のトレースは、停止する前に 2 つのレコードが読み取られたことを示しています。ポート 8000 をローカル サーバーとして使用しており、停止する URL は次のとおりです。

      http://10.0.2.2:8000/my_album/5_irises.jpg".   

jpeg ファイルと png ファイルのダウンロードに何か特別な点がありますか、それとも URL が正しくコーディングされていませんか? アンダースコアは URL の問題ですか? また、ダウンロードするたびに接続を閉じる必要がありますか?

 begin of loop {
  ........
   new AccessImages().execute(urlstring);
  }  ......end of loop 

 private class AccessImages extends AsyncTask<String, Void, Bitmap> {
        protected Bitmap doInBackground(String... urladds){
            return downloadImage(urladds[0]);
        }
        protected void onPostExecute(Bitmap bm) {
            bitmap_photo[itemcount] = bm;
            itemcount++;
        }
        }

  private Bitmap downloadImage(String url) {
        Log.d("downloadImage", url);
        Bitmap bmap = null;
        InputStream inStream = null;
    //  Drawable drawable = null;
        try {
            inStream = openHttpConnection(url);
            Log.d("inStream", String.valueOf(inStream));
        //  drawable = Drawable.createFromStream(inStream, "src");
            Log.d("before bmap", url);
            bmap = BitmapFactory.decodeStream(inStream);
            Log.d("after bmap", url);
            inStream.close();

        }
        catch (IOException el) {
            el.printStackTrace();
        }
        return bmap;
    }

    private InputStream openHttpConnection(String urlString) throws IOException {

        InputStream inStream = null;
        int checkConn = -1;
        URL url = new URL(urlString);
        URLConnection conn = url.openConnection();
        try {

            Log.d("try openhttpconnection", urlString);
            HttpURLConnection httpConn = (HttpURLConnection) conn;
            httpConn.setAllowUserInteraction(false);
            httpConn.setInstanceFollowRedirects(true);
            httpConn.setRequestMethod("GET");
            httpConn.connect();
            checkConn = httpConn.getResponseCode();
            if (checkConn == HttpURLConnection.HTTP_OK) {
                inStream = httpConn.getInputStream();
                Log.d("instream", urlString);

            }

        }
        catch (Exception ex) {
            throw new IOException("Error connecting");
        }
        return inStream;
    }

NullPointerException がこの命令にあることがわかりました。

   inStream.close();  

何が原因でしょうか?

Ok。inStream が null ではないことを修正しましたが、次の命令から NullPointerException を取得しています: bitmap_photo[itemcount] = bm;

  if(bm != null)
            {
            bitmap_photo[itemcount] = bm;
            itemcount++;
            }

ビットマップの null 値をチェックできませんか、それとも配列に問題がありますか? 次のように bitmap_photo 配列を作成したことを付け加えておきます。これは問題ですか?

          Bitmap [] bitmap_photo;
4

0 に答える 0