setAccountAuthenticatorResult
можна викликати з Діяльності, яка розширюється AccountAuthenticatorActivity
. Моя діяльність продовжує це, але запускає ASyncTask і, отже, це setAccountAuthenticatorResult
слід викликати з ASyncTask (або, результат ASyncTask повинен бути переданий назад в основний потік).
Як це зробити?
Що не так у коді нижче?
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
}
Відповіді:
67 за відповідь № 1Коли ви створюєте AsyncTask, ви можете додати до нього новий конструктор і передати посилання на Activity:
AsyncTask myTask = new MyTask(this);
А потім із методу onPostExecute () в AsyncTask ви можете викликати метод у Activity.
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();
}
}