2012-04-03 78 views
0

我在做Android的應用程序,這需要從一個活動發送的位圖對象和顯示第二活動頁面上發送的位圖對象後,改變機器人的ImageView的對象。但是,我得到一個空白屏幕加載活動

這裏是我的代碼示例發送Bitmap對象: -

Intent intent = new Intent(Display2.this, Display3.class); 
ImageView iv = (ImageView) findViewById(R.id.imageView1); 
Bitmap bitmap = Bitmap.createBitmap(iv.getWidth(), iv.getHeight(), Bitmap.Config.RGB_565); 
intent.putExtra("BitmapImage", bitmap); 
startActivity(intent); 

現在對第二個活動代碼的部分來重新發送對象並顯示它屏幕: -

public class Display3 extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     Bitmap bitmap = (Bitmap)getIntent().getParcelableExtra("BitmapImage"); 
     ImageView myIV = (ImageView) findViewById(R.id.imageView1); 
     bitmap = bitmap.createBitmap(myIV.getWidth(), myIV.getHeight(), Bitmap.Config.RGB_565); 
     myIV.setImageBitmap(bitmap); 
     setContentView(R.layout.display3); 

    } 
} 

任何人都可以提出什麼是錯誤的這部分?

謝謝!

回答

3

位圖實現Parcelable對象,所以你總是可以通過它在意向象下面這樣:

Intent intent = new Intent(this, NewActivity.class); 
intent.putExtra("BitmapImage", bitmap); 

和檢索它的另一端:

Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage"); 
+0

馬麗娟maulik !!!! – 2012-04-03 04:55:23

+0

但建議的更改顯示代碼 – 2012-04-03 05:00:51

+0

檢查天氣將位圖成功地爲位圖對象或不 – 2012-04-03 05:04:49

2

這是不好的傳遞位圖從一個活動到另一個..

你可以簡單的名字,你圖作爲靜態第一。 然後創建

public static Bitmap getBitmap(){ 
    return bitmap; 
} 

,那麼你可以簡單地從其他活動調用一個方法,

bitmapexistingclass.getBitmap(); 

如果我們使用意圖傳遞位圖,我們會得到一些錯誤,從檢查這個問題How to pass bitmap from one activity to another

1

您上面的代碼正在創建空位圖:

ImageView iv = (ImageView) findViewById(R.id.imageView1); 
Bitmap bitmap = Bitmap.createBitmap(iv.getWidth(), iv.getHeight(), Bitmap.Config.RGB_565); 

我沒有看到任何理由爲什麼從這個代碼,你會得到什麼,然後空白黑色位圖的高度和寬度等於圖像視圖的高度和寬度

+0

做更改後的錯誤,它說無法啓動活動:( – 2012-04-03 05:08:46

+0

好,這是另一個故事:)但如果你會寫出你改變的代碼,並且在堆棧跟蹤日誌 - 也許我可以幫助 – 2012-04-03 05:40:29

0

你期望從android填充圖紙Bitmap本身,要創建一個空BitmapObject與高度和寬度equavalent到ImageView對象; 作爲位圖執行Parcelable您可以簡單地將它捆綁在其他Activity

0

使用以下兩種方法將位圖轉換爲字符串,反之亦然。然後,您可以將活動意圖的字符串傳遞給另一個活動。我也在我的應用程序中做同樣的事情。 然後我們不需要使用ParcelableExtra和serialzable類。

public String convertBitmapToString(Bitmap src) { 
if(src!= null){ 
ByteArrayOutputStream os=new ByteArrayOutputStream(); 
src.compress(android.graphics.Bitmap.CompressFormat.PNG, 100,(OutputStream) os); 
byte[] byteArray = os.toByteArray(); 
return Base64.encodeToString(byteArray,Base64.DEFAULT); 
} 
return null;    
} 

public Bitmap getBitMapFromString(String src){ 
Bitmap bitmap = null; 
if(src!= null){ 
byte[] decodedString = Base64.decode(src.getBytes(), Base64.DEFAULT); 
bitmap = BitmapFactory.decodeByteArray(decodedString,0,decodedString.length); 
return bitmap; 
} 
return null; 
}