Używam narzędzia Parse jako mojego zaplecza dla mojej aplikacji na Androida. Mam raport awarii dotyczący tylko niektórych urządzeń z Androidem, gdy próbuję utworzyć obiekt użytkownika. Błąd na temat katastrofy jest:Przyczyna awarii podczas tworzenia użytkownika
Caused by: java.lang.IllegalArgumentException:
You must register this ParseObject subclass before instantiating it.
at com.parse.ParseObject.<init>(ParseObject.java:184)
urządzeń, które złożyło zgłoszenie awarii są:
HTC Desire 510 (htc_a11ul) 2 33.3% Android 4.4
Xperia E3 (D2203) 1 16.7% Android 4.4
Galaxy S4 (jflte) 1 16.7% Android 4.4
Galaxy S5 (klte) 1 16.7% Android 4.4
Jest to bardzo dziwne, jak ja obecnie testowałem mój kod na Samsung Note 4, Galaxy S4, S5 i Nexus 5 bez żadnych problemów. Nie jestem pewien, dlaczego Parse prosi mnie o subklasy znikąd, ponieważ nie próbuję korzystać z funkcji podklasy oferowanych przez Parse. Ponownie przetestowałem ten kod na innych urządzeniach bez żadnych problemów.
Czy ktoś może mi powiedzieć, jak to naprawić? Zawarłem poniższy kod, w którym utworzę użytkownika i ulega on awarii.
Dziękujemy!
Parse.initialize(this, "XXXXXXXXXXXXXXXX", "XXXXXXXXXXXXXX");
ParseUser user = new ParseUser();
user.setUsername(email);
user.setPassword(confirmPassword);
user.setEmail(email);
user.put("deviceID", deviceID);
user.put("name", fullName);
progress = new ProgressDialog(Register.this);
progress.setMessage("Creating Account... Please Wait");
progress.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progress.setIndeterminate(true);
progress.setCanceledOnTouchOutside(false);
progress.setCancelable(false);
progress.show();
user.signUpInBackground(new SignUpCallback() {
public void done(ParseException e) {
if (e == null) {
// Hooray! Let them use the app now.
Intent i = new Intent(Register.this, DeviceSettingsIntro.class);
startActivity(i);
progress.hide();
btnRegister.setEnabled(true);
} else {
// Sign up didn't succeed. Look at the ParseException
// to figure out what went wrong
progress.hide();
checkParseError(e);
btnRegister.setEnabled(true);
}
}
});
dzikie domysły. niektóre środowiska sieciowe wprowadzają problem asynchroniczny, w którym init nie zwraca i jakoś następujące wyrażenie próbuje uzyskać nowy OBJ parse_user. to może spowodować błąd msg .. Może spróbować/złapać timeout lub coś ... –
@RobertRowntree Cześć Robert, dziękuję za odpowiedź. Dodałem więcej kodu pokazujący, w jaki sposób faktycznie wysyłam obiekt użytkownika do analizy. Pod względem tego, co zasugerowałeś, nie powinno tak być, ponieważ powinien złapać błąd w oparciu o mój kod ... poprawny? Jeszcze raz dziękuję – Teddy13
Czy masz jakieś klasy, które rozszerza ParseObject lub ParseUser? –