【发布时间】:2019-03-24 10:40:42
【问题描述】:
呃,抱歉,我需要一点帮助。我检查了网络,但似乎还没有找到解决方案。
我在这里遇到了一个错误:
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“java.lang.String com.google.firebase.auth.FirebaseUser.getEmail()” 在 com.flipflop.flipflop_gmap.Utility.FirebaseMethods$1.onComplete(FirebaseMethods.java:63) 在 com.google.android.gms.tasks.zzj.run(未知来源) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5254) 在 java.lang.reflect.Method.invoke(本机方法) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:699)
这是我的代码:
public void registerNewEmail(final String email, String password, final String username){
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
Timber.tag(TAG).d("createUserWithEmail:onComplete:%s", task.isSuccessful());
if (!task.isSuccessful()) {
Toast.makeText(mContext, "Authentication Failed.",
Toast.LENGTH_SHORT).show();
}
else if(task.isSuccessful()){
user = FirebaseAuth.getInstance().getCurrentUser();
if (user.getEmail() != null) ***ERROR HERE***
sendVerificationEmail();
try {
userID = mAuth.getCurrentUser().getUid();
} catch (Exception e) {
Timber.tag(TAG).e(e, "onComplete: get userID failed: %s", userID);
}
Timber.tag(TAG).d("onComplete: Authstate changed: %s", userID);
}
}
});
}
public void sendVerificationEmail(){
FirebaseAuth auth = FirebaseAuth.getInstance();
FirebaseUser user = auth.getCurrentUser();
if(user != null){
user.sendEmailVerification()
.addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Timber.tag(TAG).d("onComplete: Email sent");
}else{
Timber.tag(TAG).d("onComplete: Email failed");
Toast.makeText(mContext, "Couldn't send verification email.", Toast.LENGTH_SHORT).show();
}
}
});
}
}
这就是我调用方法的方式:
email = mEmail.getText().toString();
username = mUsername.getText().toString();
password = mPassword.getText().toString();
firebaseMethods.registerNewEmail(email, password, username);
那些字段都被填满了,但我就是不明白为什么 getEmail() 为空。
【问题讨论】:
-
@GiovanniTerlingen 你们怎么这么快就找到了这些重复的帖子,我用谷歌搜索了一个小时......让我看看线程thx
-
呃,我觉得我的和那个不一样。
-
好吧,
user显然在这里是null,因为user.getEmail()会引发异常。我提供的链接也有同样的问题,但是您的代码当然可能与另一个不同。
标签: android firebase firebase-authentication