Android中的Firebase用户登录验证显示错误
我正在使用Firebase Auth让用户注册和登录,注册登录工作正常,我通过Firebase助手进行了检查,但在插入详细信息后在我的设备上运行时,该部分工作不正常。它在日志中显示以下错误:Android中的Firebase用户登录验证显示错误,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,我正在使用Firebase Auth让用户注册和登录,注册登录工作正常,我通过Firebase助手进行了检查,但在插入详细信息后在我的设备上运行时,该部分工作不正常。它在日志中显示以下错误: FATAL EXCEPTION: main Process: com.android.shubham.presentsir, PID: 9679 java.lang.IllegalStateException: Could not execute method for android:onC
FATAL EXCEPTION: main
Process: com.android.shubham.presentsir, PID: 9679
java.lang.IllegalStateException: Could not execute method for android:onClick
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
at android.view.View.performClick(View.java:4855)
at android.view.View$PerformClick.run(View.java:20280)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5653)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:4855)
at android.view.View$PerformClick.run(View.java:20280)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5653)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
Caused by: java.lang.IllegalArgumentException: Given String is empty or null
at com.google.android.gms.common.internal.zzbo.zzcF(Unknown Source)
at com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(Unknown Source)
at com.android.shubham.presentsir.Login.gotoDashboard(Login.java:37)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
at android.view.View.performClick(View.java:4855)
at android.view.View$PerformClick.run(View.java:20280)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5653)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
并假设我的清单工作正常,因为我已经检查过了
private EditText email,pass;
private FirebaseAuth mAuth;
ProgressDialog progressDialog;
private String email1,pass1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_login );
email=findViewById( R.id.editText5 );
pass=findViewById( R.id.editText6 );
email1=email.getText().toString();
pass1=pass.getText().toString();
mAuth=FirebaseAuth.getInstance();
}
public void gotoDashboard(View view) {
// progressDialog.setMessage( "Fetching your data" );
// progressDialog.show();
//Error occured from here as it showing the error from this line of code can you help me from where I have did this wrong
mAuth.signInWithEmailAndPassword( email1,pass1 )
.addOnCompleteListener( new OnCompleteListener<AuthResult>(){
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressDialog.dismiss();
if(task.isSuccessful()){
startActivity( new Intent( Login.this,Dashboard.class ) );
}else{
Toast.makeText( Login.this, ""e.toString(), Toast.LENGTH_SHORT ).show();
}
}
} );
}
私人编辑文本电子邮件,通过;
私人消防队;
进行对话进行对话;
私有字符串email1,pass1;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u登录);
email=findviewbyd(R.id.editText5);
通过=findViewById(R.id.editText6);
email1=email.getText().toString();
pass1=pass.getText().toString();
mAuth=FirebaseAuth.getInstance();
}
公共无效gotoDashboard(视图){
//progressDialog.setMessage(“获取数据”);
//progressDialog.show();
//错误发生在这里,因为它显示了这行代码中的错误。你能帮助我从哪里做错了吗
mAuth.使用Email和密码登录(email1,pass1)
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
progressDialog.disclose();
if(task.issusccessful()){
startActivity(新意图(Login.this、Dashboard.class));
}否则{
Toast.makeText(Login.this),“e.toString(),Toast.LENGTH_SHORT.show();
}
}
} );
}
您似乎正在通过电子邮件和密码向登录传递null
或空字符串,因此email1
或pass1
没有值。在使用Email和Password调用登录之前检查它们的值:
public void gotoDashboard(View view) {
if (email1 != null && !email1.isEmpty() && pass1 != null && !pass1.isEmpty()) {
mAuth.signInWithEmailAndPassword( email1,pass1 )
.addOnCompleteListener( new OnCompleteListener<AuthResult>(){
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
progressDialog.dismiss();
if(task.isSuccessful()){
startActivity( new Intent( Login.this,Dashboard.class ) );
}else{
Toast.makeText( Login.this, ""e.toString(), Toast.LENGTH_SHORT ).show();
}
}
});
}
}
public void gotoDashboard(视图){
if(email1!=null&&!email1.isEmpty()&&pass1!=null&&!pass1.isEmpty()){
mAuth.使用Email和密码登录(email1,pass1)
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
progressDialog.disclose();
if(task.issusccessful()){
startActivity(新意图(Login.this、Dashboard.class));
}否则{
Toast.makeText(Login.this),“e.toString(),Toast.LENGTH_SHORT.show();
}
}
});
}
}
不过,这只是一个快速解决方案。你应该弄清楚为什么email1
和pass1
没有值,并防止在这种情况下触发gotoDashboard
。这是因为你没有在gotoDashboard()中使用email
和password
的编辑文本值
在点击按钮时触发,因此发送email1
和pass1
的空值。你喜欢这样吗
public void gotoDashboard(View view)
{
email1=email.getText().toString();
pass1=pass.getText().toString();
mAuth=FirebaseAuth.getInstance();
if (email1 != null && !email1.isEmpty() && pass1 != null && !pass1.isEmpty())
{
mAuth.signInWithEmailAndPassword(email1, pass1)
.addOnCompleteListener(new OnCompleteListener<AuthResult>()
{
@Override
public void onComplete(@NonNull Task<AuthResult> task)
{
progressDialog.dismiss();
if (task.isSuccessful())
{
startActivity(new Intent(Login.this, Dashboard.class));
}
else
{
Toast.makeText(Login.this, ""e.toString(), Toast.LENGTH_SHORT).show();
}
}
});
}
}
public void gotoDashboard(视图)
{
email1=email.getText().toString();
pass1=pass.getText().toString();
mAuth=FirebaseAuth.getInstance();
if(email1!=null&&!email1.isEmpty()&&pass1!=null&&!pass1.isEmpty())
{
mAuth.使用Email和密码登录(email1,pass1)
.addOnCompleteListener(新的OnCompleteListener()
{
@凌驾
未完成的公共void(@NonNull任务)
{
progressDialog.disclose();
if(task.issusccessful())
{
startActivity(新意图(Login.this、Dashboard.class));
}
其他的
{
Toast.makeText(Login.this),“e.toString(),Toast.LENGTH_SHORT.show();
}
}
});
}
}