Невозможно кодировать несохраненный файл разбора, работая с ParseUser
Я пытаюсь выполнить регистрацию с изображением профиля, но получаю сообщение об ошибке: Невозможно кодировать несохраненный файл разбора. У меня такой же код в другом классе, и у него нет проблем.
Я думаю, что проблема может быть в использовании ParseUser вместо ParseObject. Пожалуйста, помогите мне, вот мой код.
public class SignUpActivityStep3 extends ActionBarActivity {
public static final String YOUR_APPLICATION_ID = "kuN8ihs88AYhRR1jIWT9psCGUXxSOveJPqVVsBnq";
public static final String YOUR_CLIENT_KEY = "vC4eA9CqulpgkxJ7sTPtoPSANkMxFeiFlYXwODYK";
byte[] Image;
ParseFile photo = null;
String User, Pass, Email, Description;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_signupstep3);
Parse.initialize(this, YOUR_APPLICATION_ID, YOUR_CLIENT_KEY);
EditText Desc = (EditText) findViewById(R.id.txtDesc);
Button Finish = (Button) findViewById(R.id.btnFinish);
Intent intent = getIntent();
User = intent.getStringExtra("User");
Pass = intent.getStringExtra("Pass");
Email = intent.getStringExtra("Email");
Image = intent.getByteArrayExtra("Image");
photo = new ParseFile("userpicture.png", Image);
photo.saveInBackground();
savetoParse();
}
private void savetoParse() {
ParseUser user = new ParseUser();
user.setUsername(User.toString());
user.setPassword(Pass.toString());
user.put("Profile", photo);
user.setEmail(Email.toString());
user.signUpInBackground(new SignUpCallback() {
@Override
public void done(ParseException e) {
if (e != null) {
Toast.makeText(getApplicationContext(),
"Saving user failed." + e.getMessage(), Toast.LENGTH_SHORT).show();
if (e.getCode() == 202) {
Toast.makeText(
getApplicationContext(),
"Username already taken. \n Please choose another username.",
Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(getApplicationContext(), "User Saved",
Toast.LENGTH_SHORT).show();
/*Do some things here if you want to.*/
}
}
});
}
}
1 ответ
Вам нужно дождаться окончания сохранения файла Parse, прежде чем пытаться зарегистрировать пользователя. Вам нужно сделать что-то вроде этого:
photo = new ParseFile("userpicture.png", Image);
file.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
// If successful add file to user and signUpInBackground
if(null == e)
savetoParse();
}
});
У меня была такая же проблема, но потом я решил, что для сохранения изображения нам нужно сначала войти в систему, поэтому либо войдите с помощью пользователя и пароля, используя ParseUser.LogInBackGround
метод или использование Parse.enableLocalDatastore(this);
чтобы включить автоматическое создание пользователей и вход в систему.