Classe externa AsyncTask com ProgressDialog [Atualização: e retornando?]
** Atualizado: (veja abaixo) ** Estou procurando há alguns dias e não consigo encontrar uma resposta direta para isso. Alguns dizem que é possível que alguns digam realizar alguns dizem que não é. Estou ficando louco por isso.
O que eu quero é apenas ter o AsyncTaskTask mostrando uma barra de progresso de uma classe externa. Para fazer isso, estou passando o contexto, como você pode ver na classe principal. Mas o que quer que eu tente receboNullPointerException
.
Exemplos de código de trabalho são apreciados. Obrigado
Usando o Android 2.2, a propósito.
a Principal:
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();
}
}
Atualizar: Eu tenho uma pergunta de acompanhamento: Usando o código acima, é possível retornar um valor do método onPostExecute de volta para a classe principal, de alguma forma? (Desculpe por ser noobish) Eu tentei algo como isto:
String result = new AsyncClass(this).execute();
e, em seguida, um método que retorna uma string. Mas não posso fazer isso porque recebi:
Type mismatch: cannot convert from AsyncTask<String,Void,Void> to String
O que posso fazer para resolver este problema? Obrigado.