我有一个登录 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/