2015-08-28 57 views
7

我试图从SD卡中获取图像到位图中显示Image-view.After应用程序的前两到三个图像显示,但当我滚动列表应用程序崩溃,并获得NullPointerException异常:java.lang.NullPointerException:尝试调用虚拟方法'int android.graphics.Bitmap.getWidth()'null对象引用 在com.example.tazeen.classnkk.Activity1 $ MyListAdapter.getView(Activity1.java:357)Android:NullPointerException:尝试调用空虚对象的虚拟方法'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); 

这里是记录了信息离子

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) 

回答

2

尝试。您 内,如果(objElement.endsWith(png_Pattern))

BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
    Bitmap bitmap = BitmapFactory.decodeFile(objElement, options); 
+0

但在我的字符串objElement中:已经获取sd卡路径,如objElement:= /mnt/sdcard/SDImages/95_20150824112324025.png。 – androidTag

+0

我试过上面的代码,但bitmapSize为空为什么 – androidTag

+0

我已更新的答案也参考http://stackoverflow.com/a/8710690/1552136。如果没有解决这个让我知道我会试试这个。 – harshitpthk

1

尝试用

File file = new File(objElement); 
    if (file.exists()) { 
    Bitmap bitmapSize = BitmapFactory.decodeFile(file.getAbsolutePath()); 
    } 
+0

你们为什么用'新文件(objElement).getAbsolutePath()'?为什么不''file.getAbsolutePath()'? – CoolMind

0

更换Bitmap bitmapSize = BitmapFactory.decodeFile(objElement);看来,你有无法解码图像。

从技术文档:

/** 
* Decode a file path into a bitmap. If the specified file name is null, 
* or cannot be decoded into a bitmap, the function returns null. 
* 
* @param pathName complete path name for the file to be decoded. 
* @return the resulting decoded bitmap, or null if it could not be decoded. 
*/ 
public static Bitmap decodeFile(String pathName) { 
    return decodeFile(pathName, null); 
} 
0

我知道我有点晚了这个答案。不过今天我面临着同样的问题。使用位图在毕加索设置图像,并没有解决我的问题。我尝试了下面的一个。

Picasso.with(holder.mRootView.getContext()).load(new File(trackingNumbers.get(position).getImageUrl())).error(R.drawable.no_image_place_holder).noFade().placeholder(R.drawable.no_image_place_holder).into(circularImageView); 

谢谢

相关问题