0

当我只调用wpCategories = JsonToElement.getllAllCategory();按钮onClick方法时,它工作正常。(wpCategories填满数据)。但是当我把它放在 a 中时asynctaskwpCategories返回 null。(doInBackground不是被调用吗?)

这是我关于点击方法的按钮:

public void onImageGridClick(View view) {       
    new GetJsonElementTask().execute();
    Intent intent = new Intent(this, CategoryGridActivity.class);       
    intent.putParcelableArrayListExtra(Extra.IMAGES, wpCategories);
    startActivity(intent);
}

和异步任务:

private class GetJsonElementTask extends AsyncTask<Void, Integer, String> {
    @Override
    protected void onPreExecute() {
        progressDialog = ProgressDialog.show(HomeActivity.this, "",
                "Loading...");          
    }
    @Override
    protected String doInBackground(Void... arg0) {
        wpCategories = JsonToElement.getllAllCategory();
        return null;
    }

    @Override
    protected void onPostExecute(String value) {
        progressDialog.dismiss();
    }

    @Override
    protected void onProgressUpdate(Integer... progress) {
        Log.v("DEBUG_LOG", "In onProgressUpdate");
    }

}
4

2 回答 2

2

在里面启动你的活动,onPostExecute因为这个方法在doInBackground执行完成后执行:

 @Override
    protected String doInBackground(Void... arg0) {
        wpCategories = JsonToElement.getllAllCategory();

        return wpCategories;  //<<< return value from here
    }
 @Override
    protected void onPostExecute(String value) {
        progressDialog.dismiss();

        Intent intent = new Intent(this, CategoryGridActivity.class);       
        intent.putParcelableArrayListExtra(Extra.IMAGES, value);
        startActivity(intent);
    }
于 2013-01-08T16:49:50.153 回答
1

尝试关注

public void onImageGridClick(View view) {       
    new GetJsonElementTask().execute();
}

    public void startCategoryGridActivity(){
           Intent intent = new Intent(this, CategoryGridActivity.class);        
       intent.putParcelableArrayListExtra(Extra.IMAGES, wpCategories);
       startActivity(intent);
    }

和异步任务:

private class GetJsonElementTask extends AsyncTask<Void, Integer, String> {
    @Override
    protected void onPreExecute() {
        progressDialog = ProgressDialog.show(HomeActivity.this, "",
                "Loading...");          
    }
    @Override
    protected String doInBackground(Void... arg0) {
        wpCategories = JsonToElement.getllAllCategory();
        return null;
    }

    @Override
    protected void onPostExecute(String value) {
        progressDialog.dismiss();
            startCategoryGridActivity();
    }

    @Override
    protected void onProgressUpdate(Integer... progress) {
        Log.v("DEBUG_LOG", "In onProgressUpdate");
    }

}
于 2013-01-08T16:54:18.843 回答