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 № 1Wenn 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();
}
}