簡體   English   中英

從一個活動向另一個活動發送圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM