NullPointerException:尝试调用虚拟方法';java.lang.String com.google.firebase.auth.FirebaseUser.getUid()';关于空对象引用
java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String com.google.firebase.auth.FirebaseUser.getUid()” LogcatNullPointerException:尝试调用虚拟方法';java.lang.String com.google.firebase.auth.FirebaseUser.getUid()';关于空对象引用,java,android,firebase,firebase-authentication,Java,Android,Firebase,Firebase Authentication,java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String com.google.firebase.auth.FirebaseUser.getUid()” Logcat java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' o
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' on a null object reference
at com.marsad.earningapp.activity.RegisterActivity$4.onComplete(RegisterActivity.java:138)
at com.google.android.gms.tasks.zzj.run(Unknown Source:4)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:192)
at android.app.ActivityThread.main(ActivityThread.java:6711)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:549)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:826)
错误
reference.child(currentUser.getUid()).setValue(userInformation).addOnSuccessListener(新OnSuccessListener(){
这是RegisterActivity.java
public class RegisterActivity extends AppCompatActivity {
private EditText nameEdit, emailEdit, phoneEdit, passwordEdit;
private Button loginBtn, signupBtn;
private static final String TAG = "SignUpActivity";
String defaultImage = "https://firebasestorage.googleapis.com/v0/b/earning-app-27780.appspot.com/o/woman.png?alt=media&token=4d66f140-4bd9-4a25-9838-cca28ebf48bb";
private FirebaseDatabase userinfoDatabase;
private DatabaseReference reference;
private FirebaseAuth mAuth;
private FirebaseUser currentUser;
private SweetAlertDialog sweetAlertDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
nameEdit = findViewById(R.id.nameEditSignup);
emailEdit = findViewById(R.id.emailEditSignup);
phoneEdit = findViewById(R.id.phoneEditSignup);
passwordEdit = findViewById(R.id.passwordEditSignup);
loginBtn = findViewById(R.id.loginBtnSignup);
signupBtn = findViewById(R.id.registerBTn);
userinfoDatabase = FirebaseDatabase.getInstance();
reference = userinfoDatabase.getReference("Users");
mAuth = FirebaseAuth.getInstance();
currentUser = mAuth.getCurrentUser();
loginBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(RegisterActivity.this, LoginActivity.class));
finish();
}
});
signupBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = nameEdit.getText().toString();
String phone = phoneEdit.getText().toString();
if (TextUtils.isEmpty(name) && TextUtils.isEmpty(phone)){
if (TextUtils.isEmpty(name)){
nameEdit.setError("Enter Your Name");
nameEdit.requestFocus();
}
if (TextUtils.isEmpty(phone)){
phoneEdit.setError("Enter Your Phone Number");
phoneEdit.requestFocus();
}
} else {
showRegisterDialog();
authenticationListener();
}
}
});
}
private void authenticationListener(){
final String email = emailEdit.getText().toString();
final String password = passwordEdit.getText().toString();
if(TextUtils.isEmpty(email) && TextUtils.isEmpty(password)){
if (TextUtils.isEmpty(email)){
emailEdit.setError("Enter Your Email");
emailEdit.requestFocus();
}
if (TextUtils.isEmpty(password)){
passwordEdit.setError("Enter Your Password");
passwordEdit.requestFocus();
}
} else
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
RegisterModel userInformation = new RegisterModel();
userInformation.setEmail(email);
userInformation.setName(nameEdit.getText().toString());
userInformation.setPassword(password);
userInformation.setPhone(phoneEdit.getText().toString());
userInformation.setRupees(0);
userInformation.setPoints(0);
userInformation.setImage(defaultImage);
reference.child(currentUser.getUid()).setValue(userInformation).addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
//user registered successfully
sweetAlertDialog.dismissWithAnimation();
startActivity(new Intent(RegisterActivity.this, LoginActivity.class));
finish();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//user failed to register
sweetAlertDialog.dismissWithAnimation();
showRegisterErrorDialog();
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//Error
sweetAlertDialog.dismissWithAnimation();
showRegisterErrorDialog();
}
});
}
}
公共类注册表活动扩展了AppCompatActivity{
私人编辑文本名称编辑、电子邮件编辑、电话编辑、密码编辑;
专用按钮登录、注册;
私有静态最终字符串TAG=“SignUpActivity”;
字符串defaultImage=”https://firebasestorage.googleapis.com/v0/b/earning-app-27780.appspot.com/o/woman.png?alt=media&token=4d66f140-4bd9-4a25-9838-cca28ebf48bb”;
私有FirebaseDatabase用户信息数据库;
私人数据库参考;
私人消防队;
私有FirebaseUser当前用户;
私人SweetAlertDialog SweetAlertDialog;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u寄存器);
nameEdit=findviewbyd(R.id.nameEditSignup);
emailEdit=findViewById(R.id.emailEditSignup);
phoneEdit=findviewbyd(R.id.phoneEditSignup);
passwordEdit=findviewbyd(R.id.passwordEditSignup);
loginBtn=findviewbyd(R.id.loginBtnSignup);
signupBtn=findviewbyd(R.id.registerBTn);
userinfoDatabase=FirebaseDatabase.getInstance();
reference=userinfoDatabase.getReference(“用户”);
mAuth=FirebaseAuth.getInstance();
currentUser=mAuth.getCurrentUser();
loginBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
startActivity(新意图(RegisterActivity.this、LoginActivity.class));
完成();
}
});
signupBtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
String name=namedit.getText().toString();
字符串phone=phoneEdit.getText().toString();
if(TextUtils.isEmpty(姓名)和&TextUtils.isEmpty(电话)){
if(TextUtils.isEmpty(name)){
setError(“输入您的姓名”);
nameEdit.requestFocus();
}
if(TextUtils.isEmpty(电话)){
设置错误(“输入您的电话号码”);
requestFocus();
}
}否则{
showRegisterDialog();
authenticationListener();
}
}
});
}
私有void authenticationListener(){
最终字符串email=emailEdit.getText().toString();
最终字符串密码=passwordEdit.getText().toString();
if(TextUtils.isEmpty(电子邮件)和&TextUtils.isEmpty(密码)){
如果(TextUtils.isEmpty(电子邮件)){
emailEdit.setError(“输入您的电子邮件”);
emailEdit.requestFocus();
}
if(TextUtils.isEmpty(密码)){
setError(“输入您的密码”);
passwordEdit.requestFocus();
}
}否则
mAuth.createUserWithEmailAndPassword(电子邮件,密码).addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
RegisterModel userInformation=新的RegisterModel();
userInformation.setEmail(email);
setName(nameEdit.getText().toString());
userInformation.setPassword(密码);
setPhone(phoneEdit.getText().toString());
用户信息。设置卢比(0);
用户信息。设定点(0);
userInformation.setImage(defaultImage);
reference.child(currentUser.getUid()).setValue(userInformation).addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时公开作废(作废避免){
//用户注册成功
sweetAlertDialog.dismissWithAnimation();
startActivity(新意图(RegisterActivity.this、LoginActivity.class));
完成();
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
//用户注册失败
sweetAlertDialog.dismissWithAnimation();
showRegisterErrorDialog();
}
});
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
//错误
sweetAlertDialog.dismissWithAnimation();
showRegisterErrorDialog();
}
});
}
}
当前用户
为空,表示没有用户登录。在对其调用getUid()
之前,需要检查此案例。当前用户
为空,表示没有用户登录。在对其调用getUid()
之前,需要检查此案例。以下代码行
String currentUserId;
以下代码行
String currentUserId;
请添加一些详细信息请添加一些详细信息