将照片上传到 ParseUser 对象时,它被保存到我添加的上一个用户
When uploading a photo to the ParseUser object, it's being saved to the previous user I added
我正在使用 Parse 将我的数据从我的移动应用程序保存在 Sign-Up 页面中。
我的对象中有一个类型为 "file" 的字段,名为 "photo",它从相机或 phone.
的图库中获取图像
我的对象名为 'User'(已经存在 - ParseUser-,我刚刚添加了新字段):
下面代码的问题是 图像被保存到我添加 和 user.getCurrentUser().put()
的前一个用户,当我只使用 user.put()
,我无法保存任何数据,我看到 toast
表示“发生错误”。
这是我试图保存所有数据的方式:
ParseUser user = new ParseUser();
ParseFile file = null;
user.setPassword(password);
user.setEmail(email);
user.setUsername(username);
user.put("gender", gender);
user.put("age_category", age);
user.put("admin", false);
user.put("premium", false);
user.put("about_me", about);
user.put("reward", 0);
if (flag_photo) {
file = new ParseFile("profile_pic.jpg", image);
user.put("photo", file);
user.saveInBackground();
//user.getParseUser(String.valueOf(user)).saveInBackground();
}
user.signUpInBackground(new SignUpCallback() {
public void done(ParseException e) {
if (e == null) {
// Hooray! Let them use the app now.
Intent intent = new Intent(SignUpActivity.this, LoginActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.push_down_in, R.anim.push_down_out);
finish();
}
else {
int duration = Toast.LENGTH_LONG;
Toast.makeText(SignUpActivity.this, "An error occurred. Please try again!", duration).show();
// Sign up didn't succeed. Look at the ParseException
// to figure out what went wrong
}
}
});
}
首先,您在创建新用户时不应使用 user.saveInBackground。 Parse 文档明确表示 'Note that we used the signUpInBackground method, not the saveInBackground method. New ParseUsers should always be created using the signUpInBackground (or signUp) method. Subsequent updates to a user can be done by calling save.'
其次,您没有在代码中指定图像变量的类型,但是我假设它被称为图像,它将是一个位图等。我相信解析在尝试时需要一个字节[]创建一个文件。如果您需要将位图转换为 byte[],我建议您查看此线程:Converting bitmap to byteArray android
第三,您的问题不是将其保存给了错误的用户。它是您在将文件添加到用户之前没有保存文件。
file = new ParseFile("profile_pic.jpg", image);
file.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
// If successful add file to user and signUpInBackground
}
});
希望对您有所帮助!
我正在使用 Parse 将我的数据从我的移动应用程序保存在 Sign-Up 页面中。 我的对象中有一个类型为 "file" 的字段,名为 "photo",它从相机或 phone.
的图库中获取图像我的对象名为 'User'(已经存在 - ParseUser-,我刚刚添加了新字段):
user.getCurrentUser().put()
的前一个用户,当我只使用 user.put()
,我无法保存任何数据,我看到 toast
表示“发生错误”。
这是我试图保存所有数据的方式:
ParseUser user = new ParseUser();
ParseFile file = null;
user.setPassword(password);
user.setEmail(email);
user.setUsername(username);
user.put("gender", gender);
user.put("age_category", age);
user.put("admin", false);
user.put("premium", false);
user.put("about_me", about);
user.put("reward", 0);
if (flag_photo) {
file = new ParseFile("profile_pic.jpg", image);
user.put("photo", file);
user.saveInBackground();
//user.getParseUser(String.valueOf(user)).saveInBackground();
}
user.signUpInBackground(new SignUpCallback() {
public void done(ParseException e) {
if (e == null) {
// Hooray! Let them use the app now.
Intent intent = new Intent(SignUpActivity.this, LoginActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.push_down_in, R.anim.push_down_out);
finish();
}
else {
int duration = Toast.LENGTH_LONG;
Toast.makeText(SignUpActivity.this, "An error occurred. Please try again!", duration).show();
// Sign up didn't succeed. Look at the ParseException
// to figure out what went wrong
}
}
});
}
首先,您在创建新用户时不应使用 user.saveInBackground。 Parse 文档明确表示 'Note that we used the signUpInBackground method, not the saveInBackground method. New ParseUsers should always be created using the signUpInBackground (or signUp) method. Subsequent updates to a user can be done by calling save.'
其次,您没有在代码中指定图像变量的类型,但是我假设它被称为图像,它将是一个位图等。我相信解析在尝试时需要一个字节[]创建一个文件。如果您需要将位图转换为 byte[],我建议您查看此线程:Converting bitmap to byteArray android
第三,您的问题不是将其保存给了错误的用户。它是您在将文件添加到用户之前没有保存文件。
file = new ParseFile("profile_pic.jpg", image);
file.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
// If successful add file to user and signUpInBackground
}
});
希望对您有所帮助!