2016-12-23 30 views
0

でnullポインタ例外私は登録時に、このコードで私のアプリに私のアプリがクラッシュするユーザーを登録し、私のコードは何ができる、その行に構文エラーがないアンドロイドFirebase:ユーザー登録

"FATAL EXCEPTION: main 
java.lang.NullPointerException 
at com.example.ghost.prochat.MainActivity$1.onComplete(MainActivity.java:134) 
at com.google.android.gms.tasks.zzc$1.run(Unknown Source) 
at android.os.Handler.handleCallback(Handler.java:725) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5069) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
at dalvik.system.NativeStart.main(Native Method)" 

を与えています私がやります?

ここFirebaseを持つユーザー登録方法:あなたのコメントに基づいて

FirebaseAuth.getInstance().createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 
      Logger.getLogger(LoginActivity.class.getName()).log(Level.ALL, "createUserWithEmailAndPassword:onComplete:" + task.isSuccessful()); 
      registerProgressDlg.dismiss(); 
      if (!task.isSuccessful()) { 
       Logger.getLogger(MainActivity.class.getName()).log(Level.ALL, "createUserWithEmailAndPassword", task.getException()); 
       Utils.showDialog(
         MainActivity.this, 
         getString(R.string.err_singup)); 
      } 
      else { 
       final ArrayList<String> defaultRoom = new ArrayList<String>(); 
       defaultRoom.add("home"); 
       // Update the user profile information 
       final FirebaseUser user = task.getResult().getUser(); 
       UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder() 
         .setDisplayName(String.valueOf(displayUsername)) 
         .setPhotoUri(Uri.parse("https://example.com/jane-q-user/profile.jpg")) 
         .build(); 
       user.updateProfile(profileUpdates).addOnCompleteListener(new OnCompleteListener<Void>() { 
        @Override 
        public void onComplete(@NonNull Task<Void> task) { 
         if (task.isSuccessful()) { 
          Logger.getLogger(MainActivity.class.getName()).log(Level.ALL, "User profile updated."); 
          // Construct the ChatUser 
          UserList.user = new ChatUser(user.getUid(),displayUsername, editTextEmail,true,defaultRoom); 
          // Setup link to users database 
          FirebaseDatabase.getInstance().getReference("users").child(user.getUid()).setValue(UserList.user); 
          startActivity(new Intent(MainActivity.this, UserList.class)); 
          finish(); 
         } 
        } 
       }); 
      } 
     } 
    }); 
} 
+0

あなたはNullPointerExceptionをどのようにしていますか?私。貼り付けたコードの行は134行ですか? – barq

+3

[NullPointerExceptionとは何か、それを修正する方法は?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) ) – barq

+0

エラーログのコードとアクティビティコードを共有してください。FirebaseAuthのインスタンスを初期化していないと思います。 – Shailesh

答えて

0

は、registerProgressDIgが問題です。それが初期化されていない

、これを実行しようとし、一方:あなたがインスタンス化registerProgressDIg

+0

今アプリはクラッシュしませんでしたが、私はエラーが発生している "エラー登録ユーザ" –

+0

そのエラーはFirebaseによって与えられる、 – MikeKeepsOnShine

+0

このserviceID = 16、operation = ValidateAuthServiceOperationを見ることができます java.lang.NullPointerException:onPostInitCompleteは、getRemoteServiceへの呼び出しごとに1回だけ呼び出すことができます at kqa.a(:com.google.android.gms:74) at kna .a(:com.google.android.gms:987) at knw.a(:com.google.android.gms:66) –

0

を初期化する。ここで、iは、あなたのProgressDialogがNullだと思う@MikeKeepsOnShineとして

if(registerProgressDIg!= null && registerProgressDIg.isShowing()){ 
     registerProgressDIg.dismiss(); 
} 

ところで、確認してください。あなたはonComplete()メソッドであなたを初期化しておらず、解雇しようとしていません。まず、初期化する必要があります。これを試してください。

ProgressDialog registerProgressDIg = new ProgressDialog(MainActivity.this) 
registerProgressDIg.show() 

FirebaseAuth.getInstance().createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
     @Override 
     public void onComplete(@NonNull Task<AuthResult> task) { 


      if(registerProgressDIg!= null && registerProgressDIg.isShowing()){ 
       registerProgressDIg.dismiss(); 
      } 

      //paste your code as it. 

    }); 
} 
関連する問題