2012-06-26 33 views
0

我很新。現在,這個簡單的應用程序將圖像從網上下載爲可繪製圖像,然後將其轉換爲位圖(將其存儲在緩存中)並在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中。

+0

onCreate()

mchache = LruCache<String, Bitmap>(); 

的'NullPointerException'是最簡單的錯誤,它可以很容易找到來自logcat的錯誤或檢查您的代碼邏輯。所以我建議之前問這個問題,需要問問自己:我真的試圖找到錯誤?我真的找不到錯誤嗎? – idiottiger

+0

會記得那.....下一次 – Mohit

回答

1

你沒有初始化

private LruCache<String, Bitmap> mchache; 

loadimage(); 
+1

@Paresh Mayani什麼人在玩編輯答案。 :) – Praveenkumar

+0

@SpK你可以檢查編輯日誌。請 –

+0

@PareshMayani這裏有什麼?僅編輯日誌。 – Praveenkumar