Android 正在将数据从AsyncTask类获取到活动

Android 正在将数据从AsyncTask类获取到活动,android,android-asynctask,Android,Android Asynctask,我试图从AsyncTask类的onPostExecute()中检索数据,并将其设置为同一活动的TextView的文本(因此为了测试,我使用toast来查看它是否有效) 我使用一个接口(带有processFinish()方法)从onPostExecute()获取数据,如下所示 但外部活动类别无法获得数据:- interface AsyncResponse{ void processFinish(String[][] output); } 主要活动- public class VPm

我试图从AsyncTask类的onPostExecute()中检索数据,并将其设置为同一活动的TextView的文本(因此为了测试,我使用toast来查看它是否有效)

我使用一个接口(带有processFinish()方法)从onPostExecute()获取数据,如下所示

但外部活动类别无法获得数据:-

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
    }