[英]send image from one activity to another with intent
我正在嘗試將圖像從一個活動發送到另一個活動,我在閱讀類似的問題,但沒有一個解決我的問題。 我用來發送這張照片的代碼是
public void aceptar (View view) {
ImageView iv = (ImageView) findViewById(R.id.foto);
iv.setImageBitmap(BitmapFactory.decodeFile(foto));
File file = new File(foto);
Intent intent = new Intent(this, XMPPClient.class);
ImageView img_view = (ImageView) findViewById(R.id.foto);
img_view.setBackgroundResource(intent.getIntExtra("foto",1));
startActivity(intent);
}
並接收圖像
Bundle extras = getIntent().getExtras();
if (extras == null)
{
return;
}
int res = extras.getInt("resourseInt");
ImageView foto = (ImageView) findViewById(R.id.foto);
view.setBackgroundResource(res);
錯誤是這樣
FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:3606)
at android.view.View.performClick(View.java:4211)
at android.view.View$PerformClick.run(View.java:17446)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:5336)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
之前已經問過了,但是有可能。 您是否要傳遞Image或ImageView? 兩者都有可能
ImageView:將ImageView從一項活動傳遞到另一項活動-目的-Android
Integer.parseInt()僅適用於“ 1”或“ 123”之類的字符串,這些字符串實際上僅包含Integer的字符串表示形式。
您需要的是通過其名稱查找可繪制資源。
可以使用反射來完成:
String name = "image_0";
final Field field = R.drawable.getField(name);
int id = field.getInt(null);
Drawable drawable = getResources().getDrawable(id);
Or using Resources.getIdentifier():
String name = "image_0";
int id = getResources().getIdentifier(name, "drawable", getPackageName());
Drawable drawable = getResources().getDrawable(id);
之前已經有人問過, 從一個活動傳遞圖像到另一個活動有3種解決方案來解決此問題。
“ 1)首先將圖像轉換為字節數組,然后傳遞到Intent,然后在下一個活動中,從Bundle中獲取字節數組,然后轉換為Image(Bitmap)並設置為ImageView。
將位圖轉換為字節數組:
位圖bmp = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher); ByteArrayOutputStream流=新的ByteArrayOutputStream(); bmp.compress(Bitmap.CompressFormat.PNG,100,stream); byte [] byteArray = stream.toByteArray();
將字節數組傳遞給意圖:
Intent intent = new Intent(this,NextActivity.class); intent.putExtra(“ picture”,byteArray); startActivity(intent);
從捆綁中獲取字節數組並轉換為位圖圖像:-
捆綁包= getIntent()。getExtras(); byte [] byteArray = extras.getByteArray(“ picture”); 位圖bmp = BitmapFactory.decodeByteArray(byteArray,0,byteArray.length); ImageView圖片=(ImageView)findViewById(R.id.imageView1); image.setImageBitmap(bmp);
2)首先將圖像保存到SDCard,然后在下一個活動中將此圖像設置為ImageView。
3)將位圖傳遞到Intent中,並從包中的下一個活動中獲取位圖,但是問題在於,如果那時您的位圖/圖像大小很大,則無法在下一個活動中加載圖像。”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.