java - 如何解决变量在内部类中访问并且需要声明为final的问题

标签 java firebase firebase-authentication

我有一个登录 Activity ,它从另一个 Java 类调用“登录”方法。在登录 Activity 中,当按下登录按钮时,它会调用另一个类的“登录”方法,如果所有登录详细信息都正确,则该方法应返回 true,从而允许用户继续。

我已经尝试将全局变量声明为final,但是无法操作该变量。

代码:

public boolean LogIn(String email, String password) {
    boolean success = false;
    firebaseAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {
                success = true; //  Error here
            } else {
                success = false; // Error here
            }
        }
    });
    return success;
}

最佳答案

signInWithEmailAndPassword 是异步的,并立即返回一个跟踪正在进行的工作的任务对象。这意味着 LogIn 也会立即返回并返回初始值 success。一段时间后,只要数据准备好,任务上的完成监听器就会被调用。您应该在此处处理登录结果。

您正在尝试将异步方法转换为同步方法。这不是一个好主意。使用监听器来处理结果。您无法从该监听器传递值。

关于java - 如何解决变量在内部类中访问并且需要声明为final的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54272472/

相关文章:

java - 如何从表中查找最大值和最小值以及另一列值?

java - 应用程序类可以是包私有(private)的吗?

javascript - 如何在 $on 事件处理程序中使用 $scope

ios - 如何将数据存储到 Firestore 中具有相同 ID 的多个集合?

python - 是否可以在带有可扩展选项的推送通知中发送 Firebase(FCM)通知消息(多行消息);使用Python?

node.js - 如何使用 Firebase 管理 API 创建密码重置链接?

firebase-authentication - Firebase 电话身份验证多久需要一次验证?

java - GWT 简单网络表单提交 - 重定向到新页面

java - 如何让异步监听器阻塞?

Android 身份验证 firebase 错误 : Local module descriptor class for com. 未找到 google.firebase.auth