我正在使用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>
答案 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()。