2014-04-28 30 views
0

嘿,我想傳遞一個位圖到另一個活動。爲了避免「失敗的綁定器事務」異常,我壓縮了位圖。但是現在我得到一個空指針異常,儘管我可以在圖像視圖中顯示圖像,因此它包含數據。爲了測試,我只傳遞了一個字符串,並且工作正常。 感謝您的任何答案。Android:將壓縮的位圖傳遞給Activity(NullPointerException)

MainActivity.java

//Here I want to pass the bitmap 
topBitmap = BitmapFactory.decodeByteArray(data, 0, data.length);     
      camera.release();  
      bottomBitmap=MainActivity.scaleDownBitmap(bottomBitmap, 100,getApplicationContext());   
      Intent intent = new Intent(getApplicationContext(), DetailActivity.class); 
      intent.putExtra("bottomBitmap", bottomBitmap); 
      startActivity(intent); 




//Method to compress bitmap 
public static Bitmap scaleDownBitmap(Bitmap photo, int newHeight, Context context) { 

    final float densityMultiplier = context.getResources().getDisplayMetrics().density;   

    int h= (int) (newHeight*densityMultiplier); 
    int w= (int) (h * photo.getWidth()/((double) photo.getHeight())); 

    photo=Bitmap.createScaledBitmap(photo, w, h, true); 

    return photo; 
    } 

DetailActivity.java

private Bitmap bottomBitmap; 
private ImageView bottomImage; 



//Receive Data 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.detail_activity);  
    Intent intent = getIntent(); 
    this.bottomBitmap = (Bitmap) intent.getParcelableExtra("bottomBitmap"); 
    this.bottomImage.setImageBitmap(this.bottomBitmap); 

} 

日誌:

04-28 21:56:13.317: E/AndroidRuntime(19456): FATAL EXCEPTION: main 
04-28 21:56:13.317: E/AndroidRuntime(19456): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.campic/com.example.campic.DetailActivity}: java.lang.NullPointerException 
04-28 21:56:13.317: E/AndroidRuntime(19456): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2517) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2574) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at android.app.ActivityThread.access$600(ActivityThread.java:162) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1413) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at android.os.Looper.loop(Looper.java:158) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at android.app.ActivityThread.main(ActivityThread.java:5789) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at java.lang.reflect.Method.invokeNative(Native Method) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at java.lang.reflect.Method.invoke(Method.java:525) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:843) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at dalvik.system.NativeStart.main(Native Method) 
04-28 21:56:13.317: E/AndroidRuntime(19456): Caused by: java.lang.NullPointerException 
04-28 21:56:13.317: E/AndroidRuntime(19456): at com.example.campic.DetailActivity.onCreate(DetailActivity.java:22) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at android.app.Activity.performCreate(Activity.java:5195) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111) 
04-28 21:56:13.317: E/AndroidRuntime(19456): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2473) 
04-28 21:56:13.317: E/AndroidRuntime(19456): ... 11 more 
+0

根據你的logCat錯誤是在其他活動請粘貼代碼,直到java行22的其他活動。所以我們可以看看什麼是錯的 –

+0

'bottomImage'永遠不會初始化... – njzk2

回答

1

DetailActivity

private ImageView bottomImage; 
... 
this.bottomImage.setImageBitmap(this.bottomBitmap); 

bottomImage從不初始化。在調用setImageBitmap之前,您可能需要使用findViewById來初始化變量。