0

ユーザー認証を設定するためのAPIドキュメントに従っています。私のregisterActivityは正しくFirebaseデータベースにデータを送信しますが、loginActivityのサインイン認証を設定しようとすると、ログインボタンは私が期待する通りmainActivityには行きません。私のユーザサインサインに何か問題がありますか?あるいは、ログインボタンにインテントを使用する別の方法がありますか?AndroidスタジオのFirebase認証(Googleサービスの修正版)

public class LoginActivity extends AppCompatActivity { 

private EditText emailField; 
private EditText passwordField; 

private Button loginButton; 

private FirebaseAuth loginAuth; 
private FirebaseAuth.AuthStateListener loginAuthListener; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login3); 

    loginAuth = FirebaseAuth.getInstance(); 

    emailField = (EditText) findViewById(R.id.emailField); 
    passwordField = (EditText) findViewById(R.id.passwordField); 
    loginButton = (Button) findViewById(R.id.loginButton); 

    final TextView RegisterLink = (TextView) findViewById(R.id.registerLink); 

    loginAuthListener = new FirebaseAuth.AuthStateListener(){ 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth){ 
      if(firebaseAuth.getCurrentUser() != null){ 
       startActivity(new Intent(LoginActivity.this, MainActivity.class)); 
      } 
     } 
    }; 

    RegisterLink.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent registerIntent = new Intent(LoginActivity.this, RegisterActivity.class); 
      LoginActivity.this.startActivity(registerIntent); 
     } 
    }); 

    loginButton.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View view){ 
      startSignIn(); 
     } 
    }); 
} 

@Override 
protected void onStart(){ 
    super.onStart(); 

    loginAuth.addAuthStateListener(loginAuthListener); 
} 



private void startSignIn(){ 
    String email = emailField.getText().toString(); 
    String password = passwordField.getText().toString(); 

    if(TextUtils.isEmpty(email) || TextUtils.isEmpty(password)){ 
     if(TextUtils.isEmpty(email)){ 
      Toast.makeText(LoginActivity.this, "Email Field is Empty", Toast.LENGTH_LONG).show(); 

     }else if(TextUtils.isEmpty(password)){ 
      Toast.makeText(LoginActivity.this, "Password Field is Empty", Toast.LENGTH_LONG).show(); 

     } else{ 
      Toast.makeText(LoginActivity.this, "Email Field and Password Field are Empty", Toast.LENGTH_LONG).show(); 
     } 


    } else { 

     loginAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() { 
      @Override 
      public void onComplete(@NonNull Task<AuthResult> task) { 
       if(!task.isSuccessful()){ 
        Toast.makeText(LoginActivity.this,"Either the Password or Email Field is Incorrect. Please Try Again.", Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
    } 

} 

}

答えて

0

私は、アプリの実行中にログコンソールを見て、グーグルのバージョンは、エミュレータが実行されたことは最新のものではなかったサービスを提供することを発見しました。この問題を解決するには、あなたは本当のAndroidデバイス上の...

  • 実行アプリ
  • は、すべてのあなたの依存関係の同じバージョンを使用していることを確認してくださいすることができますいずれか(すべてではすべてが10.0あり、9.8です。 0など)
  • あなたのアンドロイドツールリストの「gradleファイルを使ってプロジェクトを同期する」をクリックしてください。
関連する問題