java - Firebase Auth 在单击按钮时未启动 Activity 但在关闭并重新打开应用程序时有效

标签 java android firebase firebase-authentication

点击按钮时,Firebase Auth 未在 HomeActivitiy 上启动。

它仅在重新打开应用程序时有效。

public class Auth1Activity extends AppCompatActivity {

    String string_1;
    String string_2;

    private static final Boolean CHECK_EMAIL_VERIFIED = false;
    private static final String TAG = "LoginActivity";

    private FirebaseAuth firebaseAuth;
    private FirebaseAuth.AuthStateListener authStateListener;
    private FirebaseUser firebaseUser;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_auth_1);
        firebaseAuth = FirebaseAuth.getInstance();

        authStateListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            }
        };

        firebaseUser = firebaseAuth.getCurrentUser();

        if (firebaseUser != null) {
            Intent intent = new Intent(Auth1Activity.this, HomeActivity.class);
            startActivity(intent);
            finish();
        }

        final EditText auth_layout_1_edit_text_1 = findViewById(R.id.auth_layout_1_edit_text_1);
        final EditText auth_layout_1_edit_text_2 = findViewById(R.id.auth_layout_1_edit_text_2);
        Button auth_layout_1_button = findViewById(R.id.auth_layout_1_button);

        auth_layout_1_button.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                string_1 = auth_layout_1_edit_text_1.getText().toString();
                string_2 = auth_layout_1_edit_text_2.getText().toString();

                if (string_1.matches("") && string_2.matches("")) {
                    auth_layout_1_edit_text_1.setError("Enter Email Address");
                    auth_layout_1_edit_text_2.setError("Enter Password");
                } else if (!string_1.matches("") && !string_2.matches("")) {
                    firebaseAuth.signInWithEmailAndPassword(string_1, string_2)
                        .addOnCompleteListener(Auth1Activity.this, new OnCompleteListener<AuthResult>() {

                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            try {
                                if (firebaseUser.isEmailVerified()) {
                                    Intent intent = new Intent(Auth1Activity.this, HomeActivity.class);                                   
                                    startActivity(intent);
                                    finish();
                                } else if (!firebaseUser.isEmailVerified()) {
                                    Toast.makeText(Auth1Activity.this, "Sign Up Error Please Try Again.", Toast.LENGTH_SHORT).show();
                                }
                            } catch (NullPointerException ignored) {

                            }
                        }
                    });
                }
            }
        });
    }

    @Override
    public void onStart() {   
        super.onStart();
        firebaseAuth.addAuthStateListener(authStateListener);    
    }

    @Override
    public void onStop() {
        super.onStop();

        if (authStateListener != null) {
            firebaseAuth.removeAuthStateListener(authStateListener);
        }
    }
}

可能出了什么问题?

最佳答案

试试这个

    authStateListener = new FirebaseAuth.AuthStateListener() {

    @Override
    public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
          firebaseUser = firebaseAuth.getCurrentUser();

          if (firebaseUser != null) {

          Intent intent = new Intent(Auth1Activity.this, HomeActivity.class);
          startActivity(intent);
          finish();

        }

    }

};

关于java - Firebase Auth 在单击按钮时未启动 Activity 但在关闭并重新打开应用程序时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51396376/

相关文章:

java - 空对象引用上的 Android Camera : Attempt to invoke virtual method Android Camera Parameters on android. hardware.Camera.getParameters()'

java - 在 AlertDialog 中显示自定义 View

java - 从 Intent 返回后无法访问附加功能

javascript - 使用 Polymerfire 保存文档时出现问题

firebase - Stripe firebase扩展,监听收集组中的发票收集

java - TreeTableColumn.visible : A bound value cannot be set

java - 观察 WorkManager Work 以获得完成的 Work 输出

javascript - 如何在 React Native 中使用 index.js 而不是 (index.ios.js, index.android.js) 进行跨平台应用程序?

java - 从服务器(java)发送数据到android客户端

ios - Firebase iOS 设置优先级不更新查询