2011-11-24 210 views
4

我在ActivityA中有位圖我想將位圖從這裏傳遞給ActivityB,我爲此進行了搜索。當我使用這個如何將位圖從一個活動傳遞到另一個

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

用於獲取

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

我收到此錯誤!失敗的粘合劑交易!!!。 我該如何解決這個問題。

+0

你的意思是「有時有效,但不是所有的時間」?你在屏幕上看到了哪些效果(或者如果你遇到錯誤,在logcat中)? –

+0

檢查我的答案編輯答案你也可以使用Application類。 –

+0

這將有助於http:// stackoverflow。com/questions/13577664/pass-a-bitmap-image-from-one-activity-to-another – manish

回答

-5

你可以簡單地命名你Bitmapstatic第一。

然後創建

public static Bitmap getBitmap(){ 
return bitmap; 
} 

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

bitmapwantedclass.getBitmap(); 

希望它可以幫助

+0

我做你說的,但在想要的類錯誤方法getBitmapCrop()是未定義的類型ImageAfterCrop – NagarjunaReddy

+0

你必須這樣調用,假設你的位圖是在類A和getBitmap是在A中,你需要在B類中的位圖,所以你必須在類B中調用A.getBitmap()。 – Udaykiran

+0

謝謝你它的工作... – NagarjunaReddy

3

我試着和它下面使用intent.putExtra("name", bitmap)

雖然意圖傳遞工作,

Intent intent = new Intent(Current.this, Next.class); 
intent.putExtra("bmp", bitmap); 
startActivity(intent); 

在拿,

Bitmap bitmap = getIntent().getParcelableExtra("bmp"); 

OR

另一種選擇是使用應用程序c lass,

您還可以使用延伸Application的類,併爲Bitmap設置setter getter並從每個Acitivity調用它。

((myApplication_class_name)getApplication()).setBitmap(bmp); 

,並使用取位圖,

((myApplication_class_name)getApplication()).getBitmap(); 
+0

我創建像你說的但沒有進入ActivityB – NagarjunaReddy

+0

我在ActivityA中解密private static Bitmap b;嘗試進入這個類Bitmap a = ImageAfterCrop.b; – NagarjunaReddy

+0

你必須聲明爲公共靜態而非私有靜態。 –

1

我不認爲這是正確的方法...您可以使用此link來實現該功能。我也使用過這樣的東西。

12

你的代碼是正確的將位圖放入臨時演員,並適用於我的小圖像罰款。 但是似乎Parcelable extra的大小有限制。見http://groups.google.com/group/android-developers/browse_thread/thread/7322a84adcfee567?pli=1

您可能想要先存儲圖像,並只將URI傳遞到商店位置。

編輯:使用udaykiran建議的位圖的公共靜態字段違反了很多面向對象的原則,我甚至不知道從哪裏開始。

+0

謝謝你的編輯。我已經低估了提出這個問題的兩個答案,並留下了苛刻的評論,我從來沒有這樣做,因爲它只是** terribad **。我希望我能再次多加註意這一點。 – slezica

相關問題