setAccountAuthenticatorResult
można wywołać z działania, które się rozszerza AccountAuthenticatorActivity
. Moja aktywność to rozszerza, ale uruchamia ASyncTask i stąd setAccountAuthenticatorResult
należy wywołać z ASyncTask (lub wynik ASyncTask powinien zostać przekazany z powrotem do głównego wątku).
Jak to zrobić?
Co jest nie tak w poniższym kodzie?
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
}
Odpowiedzi:
67 dla odpowiedzi № 1Podczas tworzenia AsyncTask możesz dodać do niego nowy konstruktor i przekazać odwołanie do działania:
AsyncTask myTask = new MyTask(this);
A następnie z metody onPostExecute () w AsyncTask można wywołać metodę na działaniu.
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();
}
}