在Android中使用Picasso时无法显示图像

时间:2015-07-27 06:17:15

标签: android android-studio picasso

我正在使用Picasso拍摄一些图像并且它们工作正常,现在我正在尝试获取我之前显示但在新活动中的图像。这个没有显示,我只获得占位符。

我试图删除fit()并将其更改为resize(325,275)。我已经检查过它是否正确地从Parse获取了URL。它是。

在我的onCreate

super.onCreate(savedInstanceState);
    setContentView(R.layout.change_photo);

    mSelectPhoto = (Button) findViewById(R.id.select);
    mSendPhoto = (Button) findViewById(R.id.send);
    mRetake = (Button) findViewById(R.id.retake);
    mDescription = (TextView) findViewById(R.id.description);
    preview = (ImageView) findViewById(R.id.photoPreview);
    div = (ImageView) findViewById(R.id.div);

    mFileType = ParseConstants.TYPE_IMAGE;
    currentUserID = currentUser.getObjectId();

    Log.d("============", "Retrieved " + currentUserID + " scores");

    ParseQuery<ParseObject> query = ParseQuery
            .getQuery(ParseConstants.KEY_USER_INFO);
    query.whereEqualTo(ParseConstants.KEY_USER_ID_INFO, currentUser.getObjectId());
    query.findInBackground(new FindCallback<ParseObject>() {
        public void done(List<ParseObject> objects, ParseException e) {
            if (e == null) {
                for (ParseObject thisUser : objects) {
                    currentPicture = thisUser.getParseFile("profilePicture")
                            .getUrl();
                }
            } else {
                Log.d("EditProfileFragment.jav", "Error: " + e.getMessage());
            }
        }
    });

    Picasso.with(this).load(currentPicture).fit().into(preview);

我的XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/description"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:gravity="center"
        android:layout_marginTop="10dp"
        android:text="Select a Photo To Get Started" />

    <ImageView
        android:id="@+id/photoPreview"
        android:layout_width="325dp"
        android:layout_height="275dp"
        android:layout_centerHorizontal="true"
        android:layout_margin="10dp"
        android:layout_below="@+id/description"
        android:contentDescription="profile picture"/>

    <Button
        android:id="@+id/select"
        style="@style/AuthButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:layout_centerHorizontal="true"
        android:layout_below="@+id/photoPreview"
        android:text="Select a photo"
        android:textColor="#FFFFFF" />

    <Button
        android:id="@+id/send"
        style="@style/AuthButton"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/photoPreview"
        android:layout_toLeftOf="@+id/div"
        android:text="Change Picture"
        android:textColor="#FFFFFF" />

    <ImageView
        android:id="@+id/div"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_margin="1dp"
        android:visibility="invisible"
        android:layout_below="@+id/photoPreview"
        android:src="@drawable/button_divider"/>

    <Button
        android:id="@+id/retake"
        style="@style/AuthButton"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:visibility="invisible"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/photoPreview"
        android:layout_toRightOf="@+id/div"
        android:text="Retake"
        android:textColor="#FFFFFF" />
</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

您可以在后台任务中确定图片的网址。在将url加载到后台任务之前,将简单地执行Picasso-Load操作。尝试在回调中移动Picasso-Load操作:

query.findInBackground(new FindCallback<ParseObject>() {
    public void done(List<ParseObject> objects, ParseException e) {
        if (e == null) {
            for (ParseObject thisUser : objects) {
                currentPicture = thisUser.getParseFile("profilePicture")
                        .getUrl();
                Picasso.with(Your_Activity.this).load(currentPicture).fit().into(preview);
            }
        } else {
            Log.d("EditProfileFragment.jav", "Error: " + e.getMessage());
        }
    }
});

答案 1 :(得分:0)

更改您的代码,以便在加载图片时知道是否发生了某些错误。

Picasso.with(this).load(currentPicture).placeholder(R.drawable.ic_launcher).error(R.drawable.ic_launcher).fit().into(preview);

如果显示ic启动器而不是原始图像,则可能会遇到内存异常,请尝试.resize()并删除.fit()。