gpt4 book ai didi

java - 在实现 MVC 架构时,如何通知 View 类模型终于收到了调用 firebase 的数据

转载 作者:行者123 更新时间:2023-12-02 05:35:57 26 4
gpt4 key购买 nike

我正在尝试在简单的 Firebase 登录中实现 MVC 架构。

用户将在 View 中插入电子邮件和密码,然后 View 将调用 Controller

这是 View 代码 fragment (LoginView):

    @Override
public void onClick(View view) {
if(view==buttonLogin){
LoginResult(editTextEmail.getText().toString().trim(),editTextPassword.getText().toString().trim());
}

@Override
public void LoginResult(String email , String password) {
message = loginController.getInformedLogin(email , password);
Toast.makeText(this, message ,Toast.LENGTH_SHORT).show();

}

这是 Controller 代码 fragment (LoginController):

    @Override
public void getInformedLogin(String email, String password) {
userm = new UserModel(email , password);
userm.LoginStatus();
}

这是模型代码 fragment (用户):

    @Override
public void LoginStatus() {
if(TextUtils.isEmpty(this.email)){
//email is empty
ResultMessage= "Please enter an email";
}
if(TextUtils.isEmpty(password)){
//password is empty
ResultMessage = "Please enter a password";
}


firebaseAuth.signInWithEmailAndPassword(this.email,this.password)
.addOnCompleteListener(UserModel.this ,new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful()){
if(firebaseAuth.getCurrentUser().isEmailVerified()){
ResultMessage= "Login successful";
}else{
ResultMessage="You need to verify your email first";
}
}else{
ResultMessage=task.getException().getMessage();
}
}
});


}

调试时,我知道应用程序进程到达模型并进入 LoginStatus 函数,我的主要问题是当我从 Firebase 获取任务时,我不知道该怎么做。

例如,假设 task.successful 为 true。接下来我该怎么办?为了通知 View 类

我试图做出一个 Intent ,但没有成功我还尝试将 View 类的引用传递给模型的构造函数,然后将 View 类放入 setoncompletelistener 中。但我想我在这里缺少一些东西,但它不起作用。

也许这不是正确的方法,我愿意接受任何建议

感谢您的宝贵时间

最佳答案

每次调用 loginStatus 方法时,无需创建 OnCompleteListener 的新实例。它可以是 Controller 中的变量,并将其作为登录状态的参数注入(inject)。这样你的问题就解决了。

无论如何,我建议您更深入地了解架构,并从 Clean Arch 的基本示例开始。

enter image description here

关于java - 在实现 MVC 架构时,如何通知 View 类模型终于收到了调用 firebase 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56164771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com