将数据从AsyncTask类获取到Activity

时间:2015-05-11 12:42:14

标签: android android-asynctask

我正在尝试从AsyncTask类的onPostExecute()中检索数据,并将其设置为同一活动的textview的文本(所以只是为了测试我使用toast来查看它是否有效)。

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

但是外部活动类没有数据: -

interface AsyncResponse{
  void processFinish(String[][] output);
    }

MainActivity -

 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() -

 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
    }

执行onCreate()时,AsyncTask类是否仍然在后台执行其操作?这就是为什么我为数组元素得到null? 有没有办法延迟onCreate()在AsyncTask完成其操作后执行?

1 个答案:

答案 0 :(得分:2)

您可以使用AsyncTask类的get()方法来增加执行onCreate()的延迟。例如 -

myAsyncClass.execute()得到();