Intent intent = new Intent(mContext, SingleItemView.class);
// Pass all data rank
intent.putExtra("title", (meal.getTitle()));
/*intent.putExtra("photo",
(meal.getParseFile("photo")));*/
mContext.startActivity(intent);
正如你所看到的,我正在尝试发送一个parsefile(准确地返回照片文件)with put extra以在另一个.xml文件上显示它,无论如何问题当然是我不能使用putExtra (字符串)与getTitle类似,在SingItemView.class上:
String title , b;
Meal meal = new Meal();
// Retrieve data from MainActivity on item click event
Intent i = getIntent();
// Get the results of rank
title = i.getStringExtra("title");
b = i.getStringExtra("photo");
// Load the results into the TextViews
// Locate the TextViews in singleitemview.xml
txtrank = (TextView) findViewById(R.id.title);
txtrank.setText(title);
ParseImageView mealImage = (ParseImageView) findViewById(R.id.icon1);
ParseFile photoFile = meal.getParseFile("photo");
if (photoFile != null) {
mealImage.setParseFile(photoFile);
mealImage.loadInBackground(new GetDataCallback() {
@Override
public void done(byte[] data, ParseException e) {
// nothing to do
}
});
我将图像设置为xml中的praseimageview并进行了测试,但是我没有得到预期的结果(第一个活动错误的putextra图像),我认为b = i.get。 .....照片&#34);并没有真正使用parsefile。
我的问题是,ParseFile使用什么样的putextra,以及如何检索它。
答案 0 :(得分:1)
通常,您希望避免不必要地将大对象放入Bundles。 我想说一个更高效,更简单的解决方案是将图像URL放入Intent,并从单个图像Activity中检索它。
public static final String EXTRA_IMAGE = "image";
...
i.putStringExtra(EXTRA_IMAGE, photoFile.getUrl());
在你的SingleItemView.java
中String imageUrl = i.getStringExtra(EXTRA_IMAGE);
然后,您可以使用此图片网址以 Picasso 加载图片,例如:
Picasso.with(this).load(imageUrl).into(imageView);
有关毕加索的更多信息,请访问here。
答案 1 :(得分:0)
你可以做的是获取ParseFile的byte [],将字节存储在Bundle或Intent中,当然可以从被调用的Activity / Fragment中检索。
示例:
ParseFile mFile = meal.getParseFile("photo");
final byte[] mImageData = mFile.getData();
字节数组现在可以存储在intent或bundle中,并跨应用程序组件传递。您可以通过
将byte []转换回图像final Bitmap mBitmap = BitmapFactory.decodeByteArray(mImageData, 0, mImageData.length);
ParseFile上的getData()会阻塞主线程,因此您可能希望使用GetDataInBackground在后台执行此操作,就像您在上面的问题中已经使用过一样。您可以在
找到更多信息