/ / Wie Aufruf der Eltern Aktivitätsfunktion von ASyncTask? - Android, Android-asynctask, accountmanager

So rufen Sie die Elternaktivitätsfunktion von ASyncTask auf? - Android, Android-asynctask, accountmanager

setAccountAuthenticatorResult kann von der Aktivität aufgerufen werden, die erweitert AccountAuthenticatorActivity. Meine Aktivität erweitert das, aber startet ASyncTask und daher dieses setAccountAuthenticatorResult sollte von ASyncTask aufgerufen werden (oder das Ergebnis von ASyncTask sollte an den Hauptthread zurückgegeben werden).

Wie es geht?

Was ist falsch im folgenden Code?

AsyncTask<Uri, Void, Bundle> task = new RetrieveAccessTokenTask(this, consumer, provider, prefs).execute(uri);

public class RetrieveAccessTokenTask extends AsyncTask<Uri, Void, Bundle> {
private Context context;

public RetrieveAccessTokenTask(Context context, OAuthConsumer consumer,
OAuthProvider provider, SharedPreferences prefs) {
this.context = context;
}

@Override
protected void onPostExecute(Bundle result) {
context.setAccountAuthenticatorResult(); // doesn"t work

}

Antworten:

67 für die Antwort № 1

Wenn Sie die AsyncTask erstellen, können Sie ihr einen neuen Konstruktor hinzufügen und eine Referenz an die Aktivität übergeben:

AsyncTask myTask = new MyTask(this);

Und dann von der onPostExecute () Methode in der AsyncTask können Sie die Methode für die Aktivität aufrufen.

public class MyTask extends AsyncTask<String, String, String>
{
public MyActivity activity;

public MyTask(MyActivity a)
{
this.activity = a;
}

//  ......

protected void onPostExecute(String result)
{
activity.myMethod();
}
}