我正在尝试在我的注册功能中为用户分配角色。
通过使用以下代码:
try {
role.save(new CloudRoleCallback() {
@Override
public void done(CloudRole cloudRole, CloudException t) throws CloudException {
if(cloudRole != null){
System.out.println("Adding user role"+ ""+ cloudRole.getRoleName());
userObj.addToRole(role, new CloudUserCallback() {
@Override
public void done(CloudUser cloudUser, CloudException e) throws CloudException {
if(cloudUser != null){
System.out.println("role in role added successfully");
}
if(e != null){
e.printStackTrace();
}
}
});
}
if( t != null){
t.printStackTrace();
}
}
});
}
userObj.signUp(new CloudUserCallback() {
@Override
public void done(CloudUser cloudUser, CloudException e) throws CloudException {
if (cloudUser != null) {
onSignupSuccess();
}
if (e != null) {
e.printStackTrace();
error = e.getMessage();
error = error.substring(error.indexOf(""));
onSignupFailed();
progressDialog.dismiss();
}
}
});
当我尝试运行上述代码时,出现以下错误。
E/AndroidRuntime:致命异常:AsyncTask #2 进程:info,PID:967 java.lang.RuntimeException:在 java.os.AsyncTask$3.done(AsyncTask.java:300) 处执行 doInBackground() 时发生错误。 util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 在 java.util.concurrent.FutureTask.setException(FutureTask.java:222) 在 java.util.concurrent.FutureTask.run(FutureTask.java:242) 在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run( ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:818) 原因:java.lang.NullPointerException:尝试调用虚拟方法'int java.lang.String.length()'在 io.cloudboost.json.JSONTokener.(JSONTokener.java:85) 在 io.cloudboost.json.JSONObject.(JSONObject.java:324) 的 java.io.StringReader.(StringReader.java:47) 的空对象引用) 在 io.cloudboost.CloudUser.addToRole(CloudUser.java:317) 在 com.rakesh_kr.msrit_info.SignUp$signupClass$1.done(SignUp.java:149) 在 io.cloudboost.CloudRole.save(CloudRole.java:83) 在 com.rakesh_kr.msrit_info.SignUp$signupClass.doInBackground(SignUp.java:144) 在 com.rakesh_kr.msrit_info.SignUp$signupClass.doInBackground(SignUp.java:126) 在 android.os.AsyncTask$2.call( AsyncTask.java:288) 在 java.util.concurrent.FutureTask.run(FutureTask.java:237) 在 android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 在 java.util.concurrent.ThreadPoolExecutor。runWorker(ThreadPoolExecutor.java:1112) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 在 java.lang.Thread.run(Thread.java:818)