【发布时间】:2015-06-16 20:02:14
【问题描述】:
我使用 Parse 作为我的 Android 应用程序的后端。当我尝试创建用户对象时,我只有一些 android 设备的崩溃报告。崩溃的错误是:
Caused by: java.lang.IllegalArgumentException:
You must register this ParseObject subclass before instantiating it.
at com.parse.ParseObject.<init>(ParseObject.java:184)
提交崩溃报告的设备有:
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
这非常奇怪,因为我目前已经在三星 Note 4、Galaxy S4、S5 和 Nexus 5 上测试了我的代码,没有任何问题。我不确定为什么 Parse 会突然要求我进行子类化,因为我没有尝试使用 Parse 提供的子类功能。同样,我已经在其他设备上测试了此代码,没有任何问题。
谁能告诉我如何解决这个问题?我在下面添加了创建用户的代码,它崩溃了。
谢谢!
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);
}
}
});
【问题讨论】:
-
疯狂猜测。一些网络环境引入了一个异步问题,其中 init 不返回,并且以下表达式以某种方式尝试获取新的 parse_user OBJ。这会导致错误消息..也许尝试/捕获超时或其他东西......
-
@RobertRowntree 您好罗伯特,谢谢您的回复。我添加了更多代码,展示了我如何将 User 对象实际发送到 Parse。就您的建议而言,情况并非如此,因为它应该根据我的代码捕获错误……对吗?再次感谢您
-
你有扩展 ParseObject 或 ParseUser 的类吗?
-
@YeahIO 不,我没有。甚至进行了完整的项目搜索。我启动 ParseObject 和 ParseUser 但我没有扩展它的类。还有其他想法吗?谢谢!
-
在您的源代码中,您确实在注册前初始化 Parse。尝试在 Application 的 onCreate() 方法中初始化 Parse 并告诉我。我之前遇到过同样的错误,这解决了我的崩溃问题。
标签: java android mobile parse-platform