java - 进入使用 Firebase 身份验证和数据库的活动时,我的应用程序崩溃
问题描述
每次我使用意图启动此活动时,我的应用程序都会崩溃,该活动允许人们输入一些详细信息来注册自己,并使用 Firebase 身份验证和数据库创建一个包含用于登录的电子邮件和密码的帐户。包 com.example.jamsecure;
import android.content.Intent;
import android.os.Bundle;
import android.util.Patterns;
import android.view.View;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Spinner;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.FirebaseDatabase;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
public class Register extends AppCompatActivity {
EditText email, pw, mob, pwr, fname;
Spinner loc;
ProgressBar progressBar;
private FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_register);
progressBar=(ProgressBar) findViewById(R.id.progressBar);
progressBar.setVisibility(View.GONE);
email=findViewById(R.id.temail);
pw=findViewById(R.id.tpw);
mob=findViewById(R.id.tcn);
loc=findViewById(R.id.tl);
pwr=findViewById(R.id.tpwr);
fname=findViewById(R.id.tfn);
mAuth = FirebaseAuth.getInstance();
findViewById(R.id.br).setOnClickListener((View.OnClickListener) this);
}
@Override
protected void onStart() {
super.onStart();
if(mAuth.getCurrentUser()!=null){
//handle it
}
}
private void registerUser(){
final String em=email.getText().toString().trim();
final String name=fname.getText().toString().trim();
String password=pw.getText().toString().trim();
String password_re=pwr.getText().toString().trim();
final String phone=mob.getText().toString().trim();
final String location=loc.getSelectedItem().toString().trim();
if(name.isEmpty()){
fname.setError("Please Enter Full Name");
fname.requestFocus();
return;
}
if(em.isEmpty()){
email.setError("Email Required");
email.requestFocus();
return;
}
if(!Patterns.EMAIL_ADDRESS.matcher(em).matches()){
email.setError("Enter Valid Email");
email.requestFocus();
return;
}
if(password.isEmpty()){
pw.setError("Enter Password");
pw.requestFocus();
return;
}
if(password_re.isEmpty()){
pw.setError("Enter Password Again");
pw.requestFocus();
return;
}
if(phone.isEmpty()){
mob.setError("Please Enter Contact Info");
mob.requestFocus();
return;
}
if(location.isEmpty()){
Toast toast = Toast.makeText(this, "Please Select Location", Toast.LENGTH_LONG);
toast.show();
return;
}
progressBar.setVisibility(View.VISIBLE);
mAuth.createUserWithEmailAndPassword(em,password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
User user = new User(name,em,phone,location);
FirebaseDatabase.getInstance().getReference("Users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
progressBar.setVisibility(View.GONE);
if(task.isSuccessful()){
Toast.makeText(Register.this,"Registration Successful" ,Toast.LENGTH_LONG).show();
Intent i = new Intent(Register.this,MainActivity.class);
startActivity(i);
}
else{
Toast.makeText(Register.this,"Unable To Register",Toast.LENGTH_LONG).show();
}
}
});
}
else{
Toast.makeText(Register.this, task.getException().getMessage(),Toast.LENGTH_LONG).show();
}
}
});
}
public void onClick(View v){
switch (v.getId()){
case R.id.br: registerUser();
break;
}
}
}
logcat 中没有显示错误,但 java 控制台中有警告。
Method 'onClick(android.view.View)' is never used
解决方案
您必须实施View.OnClickListener
:
public class Register extends AppCompatActivity implements View.OnClickListener {
并添加@Override
到您的 onClick 方法中。
推荐阅读
- angular - Angular Material Datatable 未对来自 Http 请求的数据进行排序
- sql - 数据透视表获取多个值
- python - 如何识别带有队列的 Python 线程是否已完成任务?
- c++ - Googletest:值参数化类型测试
- c# - 在 dotnet 构建或发布期间无法找到包含目录的存储库
- c - 在 Visual Studio 2017 中导入 libssh 库
- visual-studio-code - 无法缩小 Visual Studio 代码
- python - AttributeError:“模型”对象没有属性“_name”
- java - Apache POI Excel 宏性能
- css - 如何使用 CSS 将 3 列堆叠在顶部以创建 2 列