我试图将sd卡中的图像转换为位图以便在Image-view中显示。运行应用程序后,首先显示两到三个图像,但是当我滚动列表应用程序崩溃并获得NullPointerException异常时:java .lang.NullPointerException:尝试调用虚方法' int android.graphics.Bitmap.getWidth()'在null对象引用上 在com.example.tazeen.classnkk.Activity1 $ MyListAdapter.getView(Activity1.java:357)
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)
答案 0 :(得分:2)
试试这个。你的内心 if(objElement.endsWith(png_Pattern))
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(objElement, options);
答案 1 :(得分:1)
尝试用
替换Bitmap bitmapSize = BitmapFactory.decodeFile(objElement);
File file = new File(objElement);
if (file.exists()) {
Bitmap bitmapSize = BitmapFactory.decodeFile(file.getAbsolutePath());
}
答案 2 :(得分:0)
您似乎有无法解码的图像。
来自文档:
/**
* 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);
}
答案 3 :(得分: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);
谢谢