2016-04-04 18 views
1

Kayıt işlevimde bir kullanıcıya rol atamaya çalışıyorum. kodunun altına kullanarakKullanıcı rolüne nasıl eklenir

:

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(); 
     } 
    } 
}); 

i hata aşağıdaki alıyorum kodunun üzerinde çalıştırmayı deneyin

.

E/AndroidRuntime: ÖLÜMCÜL İSTİSNA: AsyncTask 2. Süreci: info, PID: 967 java.lang.RuntimeException: android.os.AsyncTask $ 3.done de doInBackground() yürütülürken bir hata oluştu java.util.concurrent.FutureTask.setException de java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:355) (FutureTask.java:222) java.util en de (AsyncTask.java:300) . eşzamanlı.FutureTask.run (FutureTask.java:242) java.util.concurrent.ThreadPoolExecutor $ Worker at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112) de android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:231) de. java.lang.Thread.run (Thread.java:818) 'da (ThreadPoolExecutor.java:587) çalıştırın: java.lang.NullPointerException: Sanal yönteminin int java.lang.String.length (io.cloudboost.json.JSONTokener at)' java.io.StringReader bir boş nesne referans ile. (StringReader.java:47) . (JSONTokener.java:85) io.cloudboost.json.JSONObject de. (JSO io.cloudboost.CloudRole de io.cloudboost.CloudUser.addToRole (CloudUser.java:317) com.rakesh_kr.msrit_info.SignUp $ signupClass $ 1.done (SignUp.java:149) de de NObject.java:324) com.rakesh_kr.msrit_info.SignUp $ signupClass.doInBackground de com.rakesh_kr.msrit_info.SignUp $ signupClass.doInBackground (SignUp.java:144) de .save (CloudRole.java:83) (SignUp.java:126) Android.os.AsyncTask $ 2.call (AsyncTask.java:288) at java.util.concurrent.FutureTask.run (FutureTask.java:237) at android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask) .java: 23 1) java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:587) java.lang.Thread de de java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1112) de . Eğer user.signUp sonra sırayla denir beri çalışma (Thread.java:818)

cevap

0

@Kr Rakesh aramalarınızın dizisi yanlıştır, aslında var olmayan User üzerinde addToRole çağrıda bulunuyoruz.
Ne yapması gereken öylesine gibidir:

  1. kaydolma
  2. oluşturun ve Aşağıda done yöntem geri arama role.save ait

içindeki kayıt geri arama done yöntemiyle

  • çağrı addToRole rol kaydetmek teklif ettiğim koddur, böylece bir yaprak seçebilirsiniz:

      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

    kod hatasız çalışıyor, ancak takip eden gözlemlerim var. 1. role.save'den sonra, Rol Masası'nda, cloudboost gösterge tablosundan 2 öğesinde rolünü görebiliyorum, ancak Kullanıcı tablosunda, rol sütununa yönelik herhangi bir değer göremiyorum. Bunu kontrol edebilir misin? –

    +0

    yakında çok yakında sıralanacak olacak – egima

    +0

    @KrRakesh bu sorun backend ekibi tarafından düzeltti – egima

    İlgili konular