myq_26 2013-01-23 09:17 采纳率: 16.7%
浏览 3211
已采纳

AsyncTask中的 PostExecute() 不能加载

我执行了下面的代码:

package com.crumbin.tabs;

//java package
import java.io.IOException;
import java.util.ArrayList;

import org.json.JSONException;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ListView;

import com.crumbin.main.R;
import com.crumbin.models.User;
import com.crumbin.utilities.UserFollowingListAdapter;


public class HomeActivity extends Activity{

     final ArrayList<User> users1 = new ArrayList<User>();  
     User user;
//  public ArrayList<User> users1 = new ArrayList<User>();
     private UserFollowingListAdapter csl;
        private ListView lv;
   @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.user_main_tab_home);
      lv = (ListView) findViewById(R.id.user_crumbs_list); 

     // ListView lv = (ListView) findViewById(R.id.user_crumbs_list);
      AsyncLoader task = new AsyncLoader();
      task.execute();
     }
      private    class AsyncLoader extends AsyncTask<String,Void, String> {
               ProgressDialog dialog;

            @Override

            protected void onPreExecute(){
                 String pa = "helllo";
                   return;
            }
            @Override
            protected String doInBackground(String... pa) {
                String response = "";

                    try {

                      try {
                            user = new User("4eeb34c6d80e8f1214000000");
                            user.getFollowingCrumbsUpList();
                            for(User u : user.following){
                                users1.add(u);
                            }
                        } catch (IOException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        } catch (JSONException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

            return response;
            }

            protected void onPostExecute(String result) {
                //dialog.dismiss();
                ListView lv = (ListView) findViewById(R.id.user_crumbs_list);

                final UserFollowingListAdapter csl = new UserFollowingListAdapter(HomeActivity.this,R.layout.user_crumbs_list_item,users1,this);
                    lv.setAdapter(csl);
                return;
            }

       }
       void showError(){
       new AlertDialog.Builder(this)
       .setTitle(" Oops , Server down :( ")
       .setPositiveButton("Ok", new DialogInterface.OnClickListener() {

           @Override
           public void onClick(DialogInterface arg0, int arg1) {
               // TODO Auto-generated method stub

           }
           //
       }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int whichButton) {
               // Do nothing.
           }
       }).show();

     }
}

Error:

01-22 13:11:34.596: E/AndroidRuntime(2464): FATAL EXCEPTION: main
01-22 13:11:34.596: E/AndroidRuntime(2464): java.lang.ClassCastException: com.crumbin.tabs.HomeActivity$AsyncLoader cannot be cast to android.app.Activity
01-22 13:11:34.596: E/AndroidRuntime(2464):     at com.crumbin.utilities.UserFollowingListAdapter.<init>(UserFollowingListAdapter.java:40)
01-22 13:11:34.596: E/AndroidRuntime(2464):     at com.crumbin.tabs.HomeActivity$AsyncLoader.onPostExecute(HomeActivity.java:106)
01-22 13:11:34.596: E/AndroidRuntime(2464):     at com.crumbin.tabs.HomeActivity$AsyncLoader.onPostExecute(HomeActivity.java:1)
01-22 13:11:34.596: E/AndroidRuntime(2464):     at android.os.AsyncTask.finish(AsyncTask.java:602)
01-22 13:11:34.596: E/AndroidRuntime(2464):     at android.os.AsyncTask.access$600(AsyncTask.java:156)
01-22 13:11:34.596: E/AndroidRuntime(2464):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
01-22 13:11:34.596: E/AndroidRuntime(2464):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-22 13:11:34.596: E/AndroidRuntime(2464):     at android.os.Looper.loop(Looper.java:137)
01-22 13:11:34.596: E/AndroidRuntime(2464):     at android.app.ActivityThread.main(ActivityThread.java:4424)
01-22 13:11:34.596: E/AndroidRuntime(2464):     at java.lang.reflect.Method.invokeNative(Native Method)
01-22 13:11:34.596: E/AndroidRuntime(2464):     at java.lang.reflect.Method.invoke(Method.java:511)
01-22 13:11:34.596: E/AndroidRuntime(2464):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-22 13:11:34.596: E/AndroidRuntime(2464):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-22 13:11:34.596: E/AndroidRuntime(2464):     at dalvik.system.NativeStart.main(Native Method)

没有数据加载,循环甚至没有执行到 OnpostExecute()。错误可能是什么呢?我没获得错误信息,因为程序没执行到那一块。
我把数据加载到list 中,还是不能正常运行。如果不使用 AsyncTask,可以正常运行。
这是什么问题呢?

  • 写回答

2条回答

  • 问答小助手 2013-01-28 03:26
    关注

    doInBackground()postExecute()中把 dialog.dismiss();这一行删除。
    postExecute() 方法中添加下面的代码

    csl = new  UserFollowingListAdapter(HomeActivity.this,R.layout.user_list_item,users1,this);
    lv.setAdapter(csl);
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图