我很新。現在,這個簡單的應用程序將圖像從網上下載爲可繪製圖像,然後將其轉換爲位圖(將其存儲在緩存中)並在UI中顯示。 當我運行這個,它給NullPointerException。應用程序未運行,顯示空指針異常
代碼: -
public class ImageActivity extends Activity {
/** Called when the activity is first created. */
private LruCache<String, Bitmap> mchache;
ImageView imageview;
Bitmap image;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imageview=(ImageView)findViewById(R.id.img);
Log.i("shu","HERE @ calling loadimage");
loadimage();
}
public void loadimage()
{ Log.i("shu","HERE @ inside ");
image = (Bitmap) mchache.get("img");
Log.i("shu","HERE @line1passed");
if (image==null)
{ Log.i("shu","HERE @ imahe==null");
downloadimage();
}
else if (image != null)
{ Log.i("shu","HERE @ image!= null");
imageview.setImageBitmap(image);
}
}
// converts drawable to bitmap
public static Bitmap drawableToBitmap (Drawable drawable) {
Log.i("shu","HERE @ drawable to bitmap");
if (drawable instanceof BitmapDrawable) {
return ((BitmapDrawable)drawable).getBitmap();
}
Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawable.draw(canvas);
return bitmap;
}
public void downloadimage()
{ Log.i("shu","HERE @ download image");
String address="http://abd.com/absde.jpg";
try{
URL url = new URL(address);
InputStream content = (InputStream)url.getContent();
Drawable d = Drawable.createFromStream(content , "src");
imageview.setImageDrawable(d);
Bitmap bmap = drawableToBitmap(d);
mchache.put("img",bmap);
}
catch (IOException e)
{ Log.i("shu","HERE @ exception");
}
}
}
現在根據logcat的,問題就在這裏
的代碼B/W兩個日誌信息,所以任何人都PLZ指出什麼引起它。 我在支持庫的幫助下使用LRUCache,因爲它不在api8中。
做
onCreate()
的'NullPointerException'是最簡單的錯誤,它可以很容易找到來自logcat的錯誤或檢查您的代碼邏輯。所以我建議之前問這個問題,需要問問自己:我真的試圖找到錯誤?我真的找不到錯誤嗎? – idiottiger
會記得那.....下一次 – Mohit