好的,现在我有一个包含一些旋转器的类A,值将由扩展AsnycTask的B类填充,它从Web服务中获取微调值.在B类中,我设法检索值,在Toast中显示.现在的问题是如何将这些微调值重新传递给A类?
我试过了
Can OnPostExcecute method in AsyncTask RETURN values?
将A类传递给B类,并将该值存储在A类公共变量中,如下所示
@Override protected void onPostExecute(String result) { classA.classAvariable = result; }
但是,无论何时我尝试阅读classAvariable我总是得到一个NullPointer异常.
似乎变量从未被分配给结果.
为了可读性,我需要分离B类,而不是使用内联类.
任何想法我的Java程序员?
解决方法
我想你正在设法读取A类变量之前.
尝试使用回调函数在回调函数中传递值并刷新您的旋转器.
尝试使用回调函数在回调函数中传递值并刷新您的旋转器.
您可以创建接口,将其传递给AsyncTask(在构造函数中),然后在onPostExecute中调用方法
例如:
你的界面:
public interface OnTaskCompleted{ void onTaskCompleted(values); }
你的活动:
public YourActivity implements OnTaskCompleted{ //your Activity YourTask task = new YourTask(this); // here is the initalization code for your asyncTask }
和你的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); } }