Externe AsyncTask-Klasse mit ProgressDialog [Update: und zurückkehren?]
** Aktualisiert: (siehe unten) ** Ich habe mich ein paar Tage umgesehen und kann darauf keine eindeutige Antwort finden. Manche sagen, es sei möglich zu sagen, manche sagen, es sei nicht möglich. Ich werde verrückt nach dem.
Ich möchte nur, dass die AsyncTaskTask einen Fortschrittsbalken und eine externe Klasse anzeigt. Dazu übergebe ich den Kontext, wie Sie in der Hauptklasse sehen können. Aber was auch immer ich versuche, ich bekommeNullPointerException
.
Working Codebeispiele wird geschätzt. Vielen Dan
Unter Android 2.2 übrigens.
Main
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();
}
}
Aktualisieren Ich habe eine Folgefrage: Ist es mit dem obigen Code möglich, einen Wert aus der onPostExecute-Methode zurück an die Hauptklasse zu senden? (Tut mir leid, dass ich so dumm bin) Ich habe so etwas ausprobiert:
String result = new AsyncClass(this).execute();
und dann eine Methode, die einen String zurückgibt. Aber ich kann das nicht, weil ich habe:
Type mismatch: cannot convert from AsyncTask<String,Void,Void> to String
Was kann ich tun, um dieses Problem anzugehen? Vielen Dank