android intent putExtra Parsefile

时间:2015-01-30 12:24:47

标签: android android-intent parse-platform

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,以及如何检索它。

2 个答案:

答案 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在后台执行此操作,就像您在上面的问题中已经使用过一样。您可以在

找到更多信息

https://parse.com/docs/android_guide#files