当前位置: 首页 > 知识库问答 >
问题:

Firebase Auth在单击按钮时不启动活动,但在关闭并重新打开应用程序时有效

葛炯
2023-03-14

点击按钮时,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);
        }
    }
}

出了什么问题?

共有1个答案

严承允
2023-03-14

这样试试

    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();

        }

    }

};
 类似资料:
  • 当用户在我的通知中单击一个按钮时,我正试图打开,而该应用程序仅在后台运行并提供服务。单击按钮时,这些行在类中被触发: 我已经检查过了,这些行被触发了,所以对按钮的点击做出反应没有问题,但是不会打开。 有什么建议吗?为什么这对我不起作用,我怎么能让它起作用? 我被要求提供更多的代码,因此在我的

  • 问题内容: 关于此事,我几乎遍历了每篇文章,但大多数都没有解释如何正确执行。问题: 我创建了一个javaFX应用程序,一个骰子游戏,人类玩家与计算机,但是在玩游戏的任何时候,人类玩家都应该能够单击“新游戏”按钮,并且应该从头开始重新启动游戏。 我尝试再次启动该阶段,但是在javafx中,我们不能两次调用launch方法。 1)有没有一种方法可以实现此功能而无需重新启动整个应用程序? 2)如果没有,

  • 我正在我的应用程序中实施谷歌云消息服务(GCM)。我使用gcmIntent服务创建了一个挂起的意图并打开了一个不是启动活动的活动。当应用程序打开时,它工作正常。但当应用程序关闭时,它会打开启动活动而不是所需的活动。我尝试了我能找到的所有解决方案,但都不起作用。我挣扎了一个多星期。任何帮助都将不胜感激。 我的代码 我得到下面的堆栈跟踪

  • 我有一个包含几个引导模式的页面,其中包括: 问题是,我有一整行可以点击的表格,比如 模态内容在下面的另一个隐藏表行中,后面跟着下一个可单击的行,依此类推。现在,这一行还包含一个按钮,单击后将转到另一个页面。 我需要整行可点击,以便它打开模式,除非点击了转到其他页面的按钮,然后我需要停止打开模式。 我需要这样的东西 但针对这一点: 我还尝试给TR一个类"modaltoggle",然后用javascr

  • 我的目标操作系统将是Windows7。 如有任何帮助,不胜感激,谢谢。

  • 我可以通过firebase FCM打开活动,但这只适用于android