使用Intent将GridView图像(从URL)转换为第二个活动

时间:2014-03-02 19:25:59

标签: android bitmap android-imageview

首先我给出了我目前正在使用的代码

MainActivity

    static final String URL = "http://my .com/images/rss.xml";
    static final String KEY_TITLE = "item";
static final String KEY_THUMB_URL = "thumb_url";
// Click event for single list row
        gridView.setOnItemClickListener(new OnItemClickListener() {

            @SuppressWarnings("unchecked")
            @Override
             public void onItemClick(AdapterView<?> parent, View view,
                     int position, long id) {


                HashMap<String, String> map2 = (HashMap<String, String>) parent.getItemAtPosition(position);

                Intent in = new Intent(getApplicationContext(), FullSize.class);
                Bitmap b; // your bitmap

                in.putExtra(KEY_TITLE, map2.get(KEY_TITLE));
                in.putExtra(KEY_THUMB_URL, KEY_THUMB_URL);

                startActivity(in);
             }
         });

第二项活动

@Override

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fullsize);

        ImageView image = (ImageView) findViewById(R.id.fullsizeimg2);
        TextView txtName = (TextView) findViewById(R.id.txt1);
        Intent in = getIntent();
        // Receiving the Data

        String name = in.getStringExtra("item"); 
        Bitmap bitmap =(Bitmap) in.getParcelableExtra("thumb_url");

        // Displaying Received data
        txtName.setText(name);
        image.setImageBitmap(bitmap);




    }
}

在这种情况下,如果我使用上面的代码,title有效,我可以看到txt中的文本但我无法获取img。我想我需要将它转换为位图,但它也不适用于我。转换位图我用这个

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),"Image ID");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes); 
////////for intent /////
intent.putExtra("imagepass", bytes.toByteArray());
/////////2nd activity//////////
Bundle extras = getIntent().getExtras();
    byte[] byteArray = extras.getByteArray("imagepass");
    Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);

    ImageView iv=(ImageView) findViewById(R.id.fullsizeimg);
    iv.setImageBitmap(bmp);

但是在decoderesource行之后的主要活动中,它给出了这个错误: BitmapFactory类型中的方法decodeResource(Resources,int)不适用于参数(Resources,String)

如果你能提供帮助,我将非常高兴。

1 个答案:

答案 0 :(得分:0)

您正在使用String作为BitmapFactory.decodeResource()中的第二个参数 但是根据你的代码,Bitmap创建应该是这样的 位图bMap = BitmapFactory.decodeResource(getResources(),R.drawable.yourImageId);