Java 如何使用FirebaseAuth解决此问题?
我想使用firebaseAuth注册一个新用户,但不断出现错误 我已经使用invalidate和restart进行了调试,并重建了项目,甚至清理了项目,但它不会成功运行 注册活动Java 如何使用FirebaseAuth解决此问题?,java,android,firebase,firebase-authentication,Java,Android,Firebase,Firebase Authentication,我想使用firebaseAuth注册一个新用户,但不断出现错误 我已经使用invalidate和restart进行了调试,并重建了项目,甚至清理了项目,但它不会成功运行 注册活动 public class RegisterActivity extends AppCompatActivity{ private EditText mNickname; private EditText mEmail; private EditText mPassword; private TextView goto
public class RegisterActivity extends AppCompatActivity{
private EditText mNickname;
private EditText mEmail;
private EditText mPassword;
private TextView gotoLoginPage;
private Button mRegisterbutton;
private FirebaseAuth mAuth;
private ProgressDialog mRegProgress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mNickname = findViewById(R.id.registerNicknameId);
mEmail = findViewById(R.id.registerEmailId);
mPassword = findViewById(R.id.registerPasswordId);
FirebaseApp.initializeApp(this);
mRegisterbutton = findViewById(R.id.registerButton);
gotoLoginPage = findViewById(R.id.gotoLoginPage);
getSupportActionBar().setTitle("Create new account");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mRegProgress = new ProgressDialog(this);
mRegisterbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String nickname = mNickname.getText().toString();
String email = mEmail.getText().toString();
String password = mPassword.getText().toString();
if (mNickname.equals("")|| mEmail.equals("") || mPassword.equals("")){
Toast.makeText(getApplicationContext(), "Fill in the fields", Toast.LENGTH_LONG).show();
mRegProgress.show();
registerUser(email, password);
}
Intent toHomePage = new Intent(RegisterActivity.this, HomeActivity.class);
startActivity(toHomePage);
finish();
}
});
gotoLoginPage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent tologinPage = new Intent(RegisterActivity.this, LoginActivity.class);
startActivity(tologinPage);
}
});
}
private void registerUser(String email, String password) {
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()){
Intent gotoHomePage = new Intent(RegisterActivity.this, HomeActivity.class);
startActivity(gotoHomePage);
finish();
}
}
});
}
}
这是我运行程序时遇到的错误。尝试在空对象引用上调用虚拟方法“com.google.firebase.auth.FirebaseUser com.google.firebase.auth.FirebaseAuth.getCurrentUser”错误来自:
public void onStart() {
super.onStart();
// Check if user is signed in (non-null) and update UI accordingly.
FirebaseUser currentUser = mAuth.getCurrentUser();
updateUI(currentUser);
}
由于您没有初始化mAuth anywhere,因此这是null.getCurrentUser,它会抛出您得到的错误
在onCreate中初始化mAuth:
或者在使用它的地方用FirebaseAuth.getInstance替换mAuth。糟糕的标题。在写你的题目和问题的主体时要非常具体。
public void onStart() {
super.onStart();
// Check if user is signed in (non-null) and update UI accordingly.
FirebaseUser currentUser = mAuth.getCurrentUser();
updateUI(currentUser);
}
mAuth = FirebaseAuth.getInstance();