checkenrol.java と allcourses.java の 2 つのクラスがあります。
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");
}
既に登録している項目をクリックすると「未登録」と表示されますが、2 回目は「登録済み」と表示されます。
長い投稿で申し訳ありません。あなたが私を助けてくれることを願っています:)