【发布时间】:2017-04-12 19:33:42
【问题描述】:
我按照 API 文档设置用户身份验证。我的registerActivity 正确地将数据发送到 Firebase 数据库,但是当我尝试为我的loginActivity 设置登录身份验证时,登录按钮并没有像我预期的那样转到mainActivity。我的用户登录设置是否有问题,或者我应该以其他方式使用登录按钮的意图?
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();
}
}
});
}
}
}
【问题讨论】:
标签: java android android-intent firebase firebase-authentication