setAccountAuthenticatorResult
可以从扩展AccountAuthenticatorActivity
的Activity 中调用。我的 Activity 扩展了它,但启动了 ASyncTask,因此应该从 ASyncTask 调用这个 setAccountAuthenticatorResult
(或者,应该将 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
}
最佳答案
当你创建 AsyncTask 时,你可以给它添加一个新的构造函数,并传入一个对 Activity 的引用:
AsyncTask myTask = new MyTask(this);
然后从 AsyncTask 中的 onPostExecute() 方法就可以调用 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();
}
}
关于android - 如何从 ASyncTask 调用父 Activity 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5523438/