簡體   English   中英

從URL檢索位圖圖像,在Android中隨機獲取nullpointerexception

[英]Retrieving bitmap image from a URL ,getting nullpointerexception randomly in android

我正在嘗試使用包含Google Maps的項目。我正在嘗試從URL檢索位圖圖像,並且效果很好, 但並非一直如此

我用來檢索url的代碼在異步類中。

異步類:

public class retrieveimage extends AsyncTask<String,Void,Void>
    {
    Store_data s;
    MarkerOptions marker;
    Bitmap pinbit;
        public retrieveimage(Store_data s) {
            this.s=s;
        }
        @Override
        protected Void doInBackground(String... arg0) {
            try {
                 marker = new MarkerOptions().position(new LatLng(Double.parseDouble(s.store_latitude),Double.parseDouble(s.store_longitude))).title(s.store_name);
                String url1=arg0[0];
                URL url = new URL(url1);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setDoInput(true);
                connection.connect();
                InputStream input = connection.getInputStream();
                bitmap= BitmapFactory.decodeStream(input);
                pinbit=bitmap;

            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
            return null;

        }
        @Override
        protected void onPostExecute(Void result) {
            View custom_layout = ((LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom_marker_layout,null);
            ImageView iv_category_logo=(ImageView) custom_layout.findViewById(R.id.iv_category_logo);
            pinbit=Bitmap.createScaledBitmap(pinbit,68,62,false);
            iv_category_logo.setImageBitmap(pinbit);
            //pinbit=MainActivity.getCroppedBitmap(pinbit, 10);
            marker.icon(BitmapDescriptorFactory.fromBitmap(createDrawableFromView(StoreFinal.this, custom_layout)));
          // adding marker

          googleMap.addMarker(marker);
        }


    }

我稱異步類為:

 new retrieveimage(sobj).execute(URL_image+sobj.category+".png");

問題是變量pinbit是隨機獲得NPE的,很多時候都可以看到期望的結果,但是有時我會隨機獲得NPE,所以我認為進行Web操作的doInBackground方法存在問題,如何確保Web操作的代碼不會中斷?

LOGCAT:

07-18 18:26:20.289: E/AndroidRuntime(27803): FATAL EXCEPTION: main
07-18 18:26:20.289: E/AndroidRuntime(27803): java.lang.NullPointerException
07-18 18:26:20.289: E/AndroidRuntime(27803):    at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:344)
07-18 18:26:20.289: E/AndroidRuntime(27803):    at com.igloo.storelocater.StoreFinal$retrieveimage.onPostExecute(StoreFinal.java:177)
07-18 18:26:20.289: E/AndroidRuntime(27803):    at com.igloo.storelocater.StoreFinal$retrieveimage.onPostExecute(StoreFinal.java:1)
07-18 18:26:20.289: E/AndroidRuntime(27803):    at android.os.AsyncTask.finish(AsyncTask.java:417)
07-18 18:26:20.289: E/AndroidRuntime(27803):    at android.os.AsyncTask.access$300(AsyncTask.java:127)
07-18 18:26:20.289: E/AndroidRuntime(27803):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
07-18 18:26:20.289: E/AndroidRuntime(27803):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-18 18:26:20.289: E/AndroidRuntime(27803):    at android.os.Looper.loop(Looper.java:130)
07-18 18:26:20.289: E/AndroidRuntime(27803):    at android.app.ActivityThread.main(ActivityThread.java:3689)
07-18 18:26:20.289: E/AndroidRuntime(27803):    at java.lang.reflect.Method.invokeNative(Native Method)
07-18 18:26:20.289: E/AndroidRuntime(27803):    at java.lang.reflect.Method.invoke(Method.java:507)
07-18 18:26:20.289: E/AndroidRuntime(27803):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
07-18 18:26:20.289: E/AndroidRuntime(27803):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
07-18 18:26:20.289: E/AndroidRuntime(27803):    at dalvik.system.NativeStart.main(Native Method)

只需嘗試集成AQuery庫並使用其回調方法即可為您提供位圖及其所屬的URL。 希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM