2016-04-04 12 views
1

サインアップ機能でユーザーに役割を割り当てようとしています。私は、エラー次取得しています上記のコードを実行しようとするとユーザーをロールに追加する方法

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 プロセス:情報、PID:967 java.lang.RuntimeException:android.os.AsyncTask $ 3.doneで doInBackground() の実行中にエラーが発生しました(AsyncTask.java:300) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) at 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 $ワーカーで。 (ThreadPoolExecutor.java:587) java.lang.Thread.run(Thread.java:818) によって引き起こされた:java.lang.NullPointerException:仮想を呼び出すしようとしました メソッド 'int java.lang.String.length ) '' null nullオブジェクト参照の場合 at java.io.StringReader。(StringReader.java:47) at io.cloudboost.json.JSONTokener(JSONTokener.java:85) at io.cloudboost.json.JSONObject。( JSO NOBject.java:324) at io.cloudboost.CloudUser.addToRole(CloudUser.java:317) at com.rakesh_kr.msrit_info.SignUp $ signupClass $ 1.done(SignUp.java:149) at io.cloudboost.CloudRole com.rakesh_kr.msrit_info.SignUp $ signupClass.doInBackgroundで com.rakesh_kr.msrit_info.SignUp $ signupClass.doInBackground(SignUp.java:144) で.SAVE(CloudRole.java:83) (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:23 1) でjava.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) でjava.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587)java.lang.Threadので 。あなたuser.signUpが後で順番に呼ばれているので、実行(Thread.java:818)

答えて

0

@Krラケッシュあなたの呼び出しの順序が間違っている、あなたは本質的に非存在UseraddToRoleを呼んでいます。
あなたがやるべきことはそうのようなものです:サインアップコールバックのdone方法role.saveコールバック 以下

  • コールaddToRoledone内部方法で役割を作成し、保存し

    1. 申し込み
    2. 私が提案したコードなので、葉を選ぶことができます:

        user.signUp(new CloudUserCallback() { 
      
            @Override 
            public void done(final CloudUser user1, CloudException e) 
              throws CloudException { 
             if (e != null) 
              e.printStackTrace(); 
             else { 
              CloudRole role = new CloudRole(str); 
              role.save(new CloudRoleCallback() { 
      
               @Override 
               public void done(CloudRole x, CloudException t) 
                 throws CloudException { 
                if (t != null) 
                 t.printStackTrace(); 
                else { 
                 user1.addToRole(x, new CloudUserCallback() { 
      
                  @Override 
                  public void done(CloudUser user, 
                    CloudException e) 
                    throws CloudException { 
                   if (e != null) 
                    e.printStackTrace(); 
                   else { 
                    System.out 
                     .println("user added to role"); 
                   } 
      
                  } 
                }); 
               } 
      
              } 
             }); 
            } 
      
           } 
          }); 
      
  • +0

    コードはエラーなしで実行されていますが、次のような観察があります。 1. role.saveの後に、私はロールブロットダッシュボード からロールテーブルで作成されたロールを見ることができますが、ユーザーテーブルではロールの値が表示されません。これをチェックしていただけますか? –

    +0

    すぐにソートされる – egima

    +0

    @KrRakeshueこの問題は、バックエンドチームによって修正されました – egima

    関連する問題