我有 2 个课程:checkenrol.java 和 allcourses.java
checkenrol 扩展了 AsyncTask。我在 checkenrol 中还有一个名为“alreadyEnrolled”的全局布尔值。
allcourses 将使用 2 个参数执行 checkenrol。
这个想法是:
- allcourses 将加载课程列表。
- 用户将点击一门课程,它会在后台运行 checkenrol 课程。如果用户已经注册,则全局布尔值“alreadyEnrolled”将设置为 true,否则为 false。
- allcourses 现在将输出用户是否已经注册取决于布尔值
我的问题是 Asynctask 的执行和布尔值的比较是同时完成的。
为了进一步说明这里是我的代码片段:
这是我的 checkenrol.java
public class checkenrol extends AsyncTask <String, Void, String> {
public static boolean alreadyEnrolled = false;
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
...
if (res.equals("1")) {
alreadyEnrolled = true;
}
else {
alreadyEnrolled = false;
}
...
} ...
这是我的 allcourses.java
checkenrol ce = new checkenrol();
ce.execute(param1, param2);
if (checkenrol.alreadyEnrolled == true) {
//redirect to subject's home
System.out.println("Already Enrolled");
}
else if (checkenrol.alreadyEnrolled == false){
System.out.println("Not yet enrolled");
}
当我点击我已经注册的项目时,它会输出“尚未注册”,但我第二次点击它时,它会输出“已经注册”。
对不起,很长的帖子。希望你能帮助我:)