java - 如何使用 FirebaseAuth 解决此问题?
问题描述
我想使用 firebaseAuth 注册一个新用户,但我不断收到错误
我已经使用无效和重新启动并重建项目进行调试,甚至清理项目但它不会成功运行
注册活动
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();
}
}
});
}
}
主要活动
public class HomeActivity extends AppCompatActivity {
private FirebaseAuth mAuth;
private Toolbar mToolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
FirebaseApp.initializeApp(this);
mToolbar =findViewById(R.id.toolbarId);
getSupportActionBar().setTitle("PhorumChat");
}
private void sendToStart() {
Intent goToWelcomePage = new Intent(HomeActivity.this, WelcomeActivity.class);
startActivity(goToWelcomePage);
finish();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
if (item.getItemId() == R.id.main_logoutBtn){
FirebaseAuth.getInstance().signOut();
sendToStart();
}
return true;
}
@Override
public void onStart() {
super.onStart();
// Check if user is signed in (non-null) and update UI accordingly.
FirebaseUser currentUser = mAuth.getCurrentUser();
updateUI(currentUser);
}
private void updateUI(FirebaseUser currentUser) {
if (currentUser ==null){
Intent homepage= new Intent(HomeActivity.this, WelcomeActivity.class);
startActivity(homepage);
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
在任何地方初始化,这是null.getCurrentUser()
,这会引发您得到的错误。
要么mAuth
初始化onCreate
:
mAuth = FirebaseAuth.getInstance();
或者只是替换mAuth
为FirebaseAuth.getInstance()
您使用它的地方。
推荐阅读
- javascript - ReferenceError:直到未定义 selenium javascript
- ios - 类型“通知”没有成员“名称” - Swift
- javascript - D3 Zoom 无法读取未定义的属性“转换”
- javascript - 如何在 html css 和 js 中创建动画?
- javascript - 没有访问事件侦听器中全局变量的值?
- javascript - 无法解析剩余部分:来自“room_name _json”的“_json”
- java - Markwon 库的 Xamarin Android 绑定
- javascript - NodeJS 从“前缀”路由(例如“/something/about”)中访问“无前缀”路由名称(例如“/home”)会导致错误
- angular - 角材料垫sidenav项目
- java - BufferedReader readLine() 卡住了