Внешний класс AsyncTask с ProgressDialog [Обновление: и возвращение назад?]
** Обновлено: (см. Ниже) ** Я искал пару дней и не могу найти прямой ответ на этот вопрос. Некоторые говорят, что возможно, что некоторые говорят, чтобы достигнуть, некоторые говорят, что это не так. Я схожу с ума от этого.
То, что я хочу, это просто иметь AsyncTaskTask, показывающий индикатор выполнения внешнего класса. Для этого я передаю контекст, как вы можете видеть в основном классе. Но что бы я ни старался, я получаюNullPointerException
.
Примеры рабочего кода приветствуются. Спасибо
Использование Android 2.2, кстати.
главный:
import android.app.Activity;
import android.os.Bundle;
public class AsyncDemo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new AsyncClass(this).execute();
}
}
AsyncClass.java
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.SystemClock;
public class AsyncClass extends AsyncTask<Void, String, Void> {
private Context context;
ProgressDialog dialog = new ProgressDialog(context);
public AsyncClass(Context cxt) {
context = cxt;
}
@Override
protected void onPreExecute() {
dialog.setTitle("Please wait");
dialog.show();
}
@Override
protected Void doInBackground(Void... unused) {
SystemClock.sleep(2000);
return (null);
}
@Override
protected void onPostExecute(Void unused) {
dialog.dismiss();
}
}
Обновить: У меня есть дополнительный вопрос: используя приведенный выше код, можно ли каким-то образом вернуть значение из метода onPostExecute обратно в основной класс? (Извините за то, что я нобиш) я пробовал что-то вроде этого:
String result = new AsyncClass(this).execute();
а затем метод, который возвращает обратно строку. Но я не могу этого сделать, потому что я получил:
Type mismatch: cannot convert from AsyncTask<String,Void,Void> to String
Что я могу сделать, чтобы решить эту проблему? Благодарю.