gpt4 book ai didi

java - 从 onPostExecute 和 doInBackground 返回 boolean 值

转载 作者:行者123 更新时间:2023-12-01 17:46:45 24 4
gpt4 key购买 nike

我正在寻找解决我的问题的方法。

我在我的 Activity 中调用 AsyncTask:

login.execute(emailText.getText().toString(), passwordText.getText().toString());

在登录类中,我检查用户是否存在。

public class Login extends AsyncTask<String, Boolean, Void> {

public Login(Application application){
repository = new Repository(application);
}

@Override
protected Boolean doInBackground(String... body){
try {
user = repository.getUser(body[0], body[1]);
if (user != null)
return true; //wont work
else {
return false;
}
}
catch(Exception e){
return null;
}
}

protected void onPostExecute(Long result) {
//i want to have bool value here that i will see in my activity
}

我的问题是,当条件匹配时,如何从 AsyncTask 获取 bool 值?是否有任何可能的方式来调用这样的方法?

boolean valid = login.execute();

感谢帮助

最佳答案

onPostExecute() 参数类型更改为 Boolean,然后告诉谁会对发生的结果感兴趣。

对于最后一部分,您可以拥有一个接口(interface)并让某人(感兴趣的类)实现它。

public class Login extends AsyncTask<String, Boolean, Boolean> {

private LoginListener listener;

public Login(Application application, LoginListener listener){
repository = new Repository(application);
this.listener = listener;
}

@Override
protected Boolean doInBackground(String... body){
try {
user = repository.getUser(body[0], body[1]);
if (user != null)
return true; //wont work
else {
return false;
}
}
catch(Exception e){
return null;
}
}

protected void onPostExecute(Boolean result) {
listener.onLoginPerformed(result)
}



public static interface LoginListener{
public void onLoginPerformed(Boolean result);
}
}

然后假设您希望 MainActivity 在登录时使用react:

public class MainActivity extends AppCompatActitvity implements LoginListener{
....
// When you create the Login object, in onCreate() for example:
// new Login(application, this); // this is the activity acting as listener...

@Override public void onLoginPerformed(Boolean result){
// do what you want to do with the result in Main Activity
}

}

关于java - 从 onPostExecute 和 doInBackground 返回 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54346609/

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