Android 正在将数据从AsyncTask类获取到活动
我试图从AsyncTask类的onPostExecute()中检索数据,并将其设置为同一活动的TextView的文本(因此为了测试,我使用toast来查看它是否有效) 我使用一个接口(带有processFinish()方法)从onPostExecute()获取数据,如下所示 但外部活动类别无法获得数据:-Android 正在将数据从AsyncTask类获取到活动,android,android-asynctask,Android,Android Asynctask,我试图从AsyncTask类的onPostExecute()中检索数据,并将其设置为同一活动的TextView的文本(因此为了测试,我使用toast来查看它是否有效) 我使用一个接口(带有processFinish()方法)从onPostExecute()获取数据,如下所示 但外部活动类别无法获得数据:- interface AsyncResponse{ void processFinish(String[][] output); } 主要活动- public class VPm
interface AsyncResponse{
void processFinish(String[][] output);
}
主要活动-
public class VPmovies extends Activity implements AsyncResponse {
MyAsyncClass myAsyncClass = new MyAsyncClass();
String[][] mov_details;
protected void onCreate(Bundle savedInstanceState) {
myAsyncClass.asyncResponse=this;
myAsyncClass.execute();
mov_details=new String[6][9];
super.onCreate(savedInstanceState);
setContentView(R.layout.vpmovies);
Toast.makeText(this,"onCreate"+mov_details[0][1],Toast.LENGTH_LONG).show();
// output from here is - "onCreate**null**"
}
public void processFinish(String[][] output) {
mov_details = output;
}
MyAsyncClass的onPostExecute()
执行onCreate()时,AsyncTask类是否仍在后台执行其操作?这就是为什么数组元素为null的原因吗?
有没有办法在AsyncTask完成其操作后延迟onCreate()的执行?您可以使用AsyncTask类的方法在onCreate()的执行中添加延迟。例如-
myAsyncClass.execute().get() 数据应该在您的
processFinish()
中可用,而不是在onCreate()中,因为活动已经创建,然后执行asycTask。您不会在onCreate
Toast
中得到结果,因为AsyncTask
在工作线程下运行,最好在processFinish()中进行Toast
方法,您将在其中获得结果。还有一件事,onCreate Toast
作为第一个Toast打印,我想先在processFinish()中运行任务,它会工作吗?谢谢Bharat,它工作了(y)哇,这是最好、最简单的解决方案。谢谢阿比吉特。我不敢相信我为此浪费了这么多时间,甚至不需要一个接口来从AsyncTask获取数据,而且这个解决方案对我来说是最好的,因为我想根据AsyncTask的结果更新我的活动屏幕。
protected void onPostExecute(String[][] strings) {
// super.onPostExecute(strings);
asyncResponse.processFinish(strings);
Toast.makeText(VPmovies.this,"onPostToast"+strings[1][0],Toast.LENGTH_LONG).show();
//THIS prints the data from the array successfully
}