Android:NullPointerException:尝试在空对象引用上调用虚方法'int android.graphics.Bitmap.getWidth()'

and*_*Tag 8 android

我试图将SD卡中的图像转换为位图以便在Image-view中显示.运行应用程序后,首先显示两到三个图像,但是当我滚动列表应用程序崩溃并获得NullPointerException异常时:java.lang.NullPointerException:尝试在com.example.tazeen.classnkk.Activity1 $ MyListAdapter.getView(Activity1.java:357)上的空对象引用上调用虚拟方法'int android.graphics.Bitmap.getWidth()'

                if(objElement.endsWith(mp3_Pattern))
                {
                    Log.e("Mp3 ", " ends with ");

                    {
                        int  scalFactor  = fixHeight / h ;
                        newWidth = (int)( w * scalFactor);
                        Log.e("scalFactor "," = " + scalFactor);
                        Log.e("newWidth "," = " + newWidth);
                        Log.e("resizing...  ","in if condition");
                        new_Height = fixHeight ;
                    }
                    else
                    {
                        newWidth = w;
                        new_Height = h;
                    }


                    Uri uri = Uri.fromFile(new File(objElement));
                    Picasso.with(getContext()).load(uri).resize(newWidth, new_Height).placeholder(R.drawable.img_placeholder).into(imageView , new com.squareup.picasso.Callback() {
                        @Override
                        public void onSuccess() {
                            if (pBar != null) {
                                pBar.setVisibility(View.GONE);
                            }
                        }
                        @Override
                        public void onError() {

                        }
                    });
                }

                holder.linearLayout.addView(imageView);
                holder.linearLayout.addView(pBar);
Run Code Online (Sandbox Code Playgroud)

这是日志信息

08-28 14:22:14.077    2947-2947/? E/AndroidRuntime? FATAL EXCEPTION: main
    Process: com.example.tazeen.classnkk, PID: 2947
    java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.Bitmap.getWidth()' on a null object reference
            at com.example.tazeen.classnkk.AllPosts_Page$MyListAdapter.getView(AllPosts_Page.java:357)
            at android.widget.AbsListView.obtainView(AbsListView.java:2347)
            at android.widget.ListView.makeAndAddView(ListView.java:1864)
            at android.widget.ListView.fillDown(ListView.java:698)
            at android.widget.ListView.fillGap(ListView.java:662)
            at android.widget.AbsListView.trackMotionScroll(AbsListView.java:4991)
            at android.widget.AbsListView.scrollIfNeeded(AbsListView.java:3418)
            at android.widget.AbsListView.onTouchMove(AbsListView.java:3801)
            at android.widget.AbsListView.onTouchEvent(AbsListView.java:3632)
            at android.view.View.dispatchTouchEvent(View.java:8471)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2399)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2092)
            at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2405)
            at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2106)
Run Code Online (Sandbox Code Playgroud)

har*_*thk 3

尝试这个。在你的 if (objElement.endsWith(png_Pattern)) 内

  BitmapFactory.Options options = new BitmapFactory.Options();
  options.inPreferredConfig = Bitmap.Config.ARGB_8888;
  Bitmap bitmap = BitmapFactory.decodeFile(objElement, options);
Run Code Online (Sandbox Code Playgroud)