これは私がAndroidのAsyncTask
を実装したいと思っている私の活動のコードスニペットです。 doInBackground
の返信文をonPostExecute
にキャッチ/リトリーブすることが間違っている場合は教えてください。これが正しい場合はどうすればいいですか?AsyncTaskのdoInBackgroundメソッドからreturn文を取得していますか?
public class EvaluateTask extends AsyncTask{
ProgressDialog progress = new ProgressDialog(context);
@Override
protected void onPreExecute() {
progress.setMessage("Analysing");
progress.setIndeterminate(true);
progress.show();
}
@Override
protected Object doInBackground(Object[] params) {
Evaluate evaluate = new Evaluate(db); //Evaluate class object
return evaluate.getScore();
}
@Override
protected void onPostExecute(Object o) {
progress.dismiss();
Intent i = new Intent(googleAct.this,result.class);
startActivity(i);
//ERROR IN FOLLOWING LINE >>>>>>>
i.putExtra("score",finalScore);
}
}
私はAsyncTaskを使用してバックグラウンドで(score
変数を返す)getScore()
メソッドの実行によりresult
活動にEvaluate
クラスからscore
変数を転送することをここで注意してください。
ストア変数のクラスのタイプは何ですか。また、あなたが余分に入れているエラーは何ですか。どこでもfinalscoreとして宣言された変数がないので、エラーが発生します。あなたのオブジェクトを利用してみてください。 –
'AsyncTask'についてもっと学ぶ必要があります。クラスを拡張するときに型パラメータがいくつかありますが、doInbackground()の戻り値はonPostexecute()のパラメータとして渡されるべきです。 'onPostExecute(Object o)'のパラメータ 'Object o'の値 – Yazan