Jac*_*k-V 9 android return-value android-asynctask
好的,现在我有Class A一些包含一些微调器,这些值将由Class B扩展填充,AsnycTask从Web服务中获取微调器值.在B类中,我设法检索值,在Toast中显示.现在的问题是如何将这些微调器值传递回A类?
我试过了
AsyncTask RETURN值中的OnPostExcecute方法可以吗?
通过传递Class A到Class B并存储该值在公共变量Class A象下面
@Override
protected void onPostExecute(String result)
{
classA.classAvariable = result;
}
Run Code Online (Sandbox Code Playgroud)
然而,每当我尝试阅读时,classAvariable我总会得到一个NullPointer Exception.似乎变量从未分配过结果.出于可读性目的,我需要分开Class B而不是用作内联类.
我的Java程序员是什么想法?
Ner*_*een 33
我猜你正在尝试在设置之前读取A类变量.尝试使用回调函数来执行它.在回调函数中传递值并刷新你的微调器..
您可以创建interface,将其传递给AsyncTask(在构造函数中),然后调用方法onPostExecute
例如:
你的界面:
public interface OnTaskCompleted{
void onTaskCompleted(values);
}
Run Code Online (Sandbox Code Playgroud)
你的活动:
public YourActivity implements OnTaskCompleted{
//your Activity
YourTask task = new YourTask(this); // here is the initalization code for your asyncTask
}
Run Code Online (Sandbox Code Playgroud)
而你的AsyncTask:
public YourTask extends AsyncTask<Object,Object,Object>{ //change Object to required type
private OnTaskCompleted listener;
public YourTask(OnTaskCompleted listener){
this.listener=listener;
}
//required methods
protected void onPostExecute(Object o){
//your stuff
listener.onTaskCompleted(values);
}
}
Run Code Online (Sandbox Code Playgroud)
创建一个像这样的接口,OnCompletRequest()然后将其传递给 ClassB 构造函数,然后简单地调用该接口内的方法,例如complete(yourList list) 在方法中onPostExecute(String result)