Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android AsyncTask-can';t执行onPostExecute方法_Android_Android Asynctask - Fatal编程技术网

android AsyncTask-can';t执行onPostExecute方法

android AsyncTask-can';t执行onPostExecute方法,android,android-asynctask,Android,Android Asynctask,我已经编写了一个应用程序来运行异步任务,下面列出了部分代码。问题是,当异步任务通过执行线程处理程序中的“newaddImageTask().execute();”代码启动时,任务将启动,并且一切正常。然而,在执行了“doInBackground”方法中的所有代码之后,应用程序最终将停留在“doInBackground”方法中。任务无法转到“onPostExecute”方法。(即,无法关闭对话框…)出了什么问题 谢谢你的帮助 private Handler handleFetchResult =

我已经编写了一个应用程序来运行异步任务,下面列出了部分代码。问题是,当异步任务通过执行线程处理程序中的“newaddImageTask().execute();”代码启动时,任务将启动,并且一切正常。然而,在执行了“doInBackground”方法中的所有代码之后,应用程序最终将停留在“doInBackground”方法中。任务无法转到“onPostExecute”方法。(即,无法关闭对话框…)出了什么问题

谢谢你的帮助

private Handler handleFetchResult = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        progressDialog.dismiss();
        Log.d(TAG, "Start handle fetch result");
        try {
            JSONArray ja = new JSONArray(fetchResult);
            Log.d(TAG, "JSON Array Length = " + ja.length());
            JSONObject jo = new JSONObject();

            for (int i = 0; i < ja.length(); i++) {
                jo = ja.getJSONObject(i);
                PhotoURLs.add(PAT_url + jo.getString("filePath"));
                Log.d(TAG, PhotoURLs.get(i));
            }
        } catch (JSONException e) {
            Log.d(TAG, "Fetch result error: " + e.getLocalizedMessage());
            e.printStackTrace();
        }

        //TODO: display thumbnail
        new AddImageTask().execute();

    }//void handleMessage
};//Handler handleFetchResult


class AddImageTask extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        loadThumbnailDialog.show(SitePhotoGallery.this, "Fetch thumbnails from server",
                "Loading...", true, true);
        Log.d("AddImageTask.onPreExecute","onPreExecute");
    }
    @Override
    protected Void doInBackground(Void... unused) {
        // TODO Auto-generated method stub
        for (String url : PhotoURLs) {

            String filename = url.substring(url.lastIndexOf("/") + 1, url.length());

            String thumburl = url.substring(0, url.lastIndexOf("/")+1);



            imgAdapter.addItem(LoadThumbnailFromURL(thumburl + filename));
            publishProgress();

        }
        Log.d("AddImageTask.doInBackground","doInBackground");
        return null ;
    }

    @Override
    protected void onProgressUpdate(Void... unused) {
        super.onProgressUpdate();
        imgAdapter.notifyDataSetChanged();
        Log.d("AddImageTask.onProgressUpdate","OnProgressUpdate");

    }

    protected void onPostExecute(Void... unused) {
        super.onPostExecute(null);
        loadThumbnailDialog.dismiss();
        Log.d("AddImageTask.onPostExecute","onPostExecute");

    }

}
private handleFetchResult=new Handler(){
@凌驾
公共无效handleMessage(消息消息消息){
progressDialog.disclose();
Log.d(标记“开始句柄获取结果”);
试一试{
JSONArray ja=新的JSONArray(fetchResult);
Log.d(标记,“JSON数组长度=”+ja.Length());
JSONObject jo=新的JSONObject();
对于(int i=0;i
我认为这是因为
onPostExecute()
应该使用
Void
参数,而不是
Void…
参数。(您还应指定
@Override
,正如Soxxeh在其上述评论中所指出的那样。)

当有人回答问题,并且在您提问15分钟后,单击他们答案旁边的复选标记。