我开发了一个Android应用程序。
应用程序正在使用xml解析执行显示的列表视图。
我使用了下面的代码。文本数据从一个活动成功传递到下一个活动,但图像不会从一个活动传递到另一个活动。
如何将图像从一个活动传递到Android应用程序中的下一个活动?
这是第一项活动:
String title = ((TextView) view.findViewById(R.id.title)).getText().toString();
String duration = ((TextView) view.findViewById(R.id.duration)).getText().toString();
String artist = ((TextView) view.findViewById(R.id.artist)).getText().toString();
String image = ((ImageView) view.findViewById(R.id.list_image)).getImageMatrix().toString();
// Starting new intent
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra(KEY_TITLE, title);
in.putExtra(KEY_DURATION, duration);
in.putExtra(KEY_ARTIST, artist);
in.putExtra(KEY_THUMB_URL, image);
startActivity(in);
这是下一个活动:
Intent in = getIntent();
// Get XML values from previous intent
String title = in.getStringExtra(KEY_TITLE);
String duration = in.getStringExtra(KEY_DURATION);
String artist = in.getStringExtra(KEY_ARTIST);
Bitmap bitmap =(Bitmap) in.getParcelableExtra(KEY_THUMB_URL);
// Displaying all values on the screen
TextView lblName = (TextView) findViewById(R.id.name_label);
TextView lblCost = (TextView) findViewById(R.id.cost_label);
TextView lblDesc = (TextView) findViewById(R.id.description_label);
ImageView image = (ImageView)findViewById(R.id.image_label);
image.setImageBitmap(bitmap);
lblName.setText(title);
lblCost.setText(duration);
lblDesc.setText(artist);
修改
我更改了第一个活动,如下面的代码:
String image = ((ImageView) view.findViewById(R.id.list_image)).getImageMatrix().toString();
Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
in.putExtra(KEY_THUMB_URL, image);
我已经改变了第二项活动,如下所示:
static final String KEY_THUMB_URL = "Image";
String Image = in.getStringExtra(KEY_THUMB_URL);
ImageLoader imageLoader = new ImageLoader(getApplicationContext());
ImageView thumb = (ImageView) findViewById(R.id.image_label);
imageLoader.DisplayImage(Image, thumb);
在我必须运行应用程序后意味着我只能获得空白图像。
答案 0 :(得分:0)
为了在活动之间传递图像,首先将图像转换为位图,然后使用THIS将该位图传递给下一个活动。
答案 1 :(得分:0)
不能直接通过intent传递位图,而是必须将位图转换为字节数组,然后通过intent传输字节数组,并在被调用的活动中将字节数组转换为位图。
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),"Image ID");
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
然后传递图像
intent.putExtra("imagepass", bytes.toByteArray());
startActivity(intent);
然后是被叫活动
Bundle extras = getIntent().getExtras();
byte[] byteArray = extras.getByteArray("imagepass");
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
ImageView iv=(ImageView) findViewById(R.id.imgvw2);
iv.setImageBitmap(bmp);