Android错误异步任务

Android错误异步任务,android,mysql,Android,Mysql,我开发了一个必须检索mysql数据库信息的应用程序, 当我执行我的应用程序时,它会工作,但在显示listview时会阻塞 这是我的密码 public class search_ville extends Activity { static String purl; public static ArrayList < etablissement > Lesetab = new ArrayList < > (); private ListView lv

我开发了一个必须检索mysql数据库信息的应用程序, 当我执行我的应用程序时,它会工作,但在显示listview时会阻塞

这是我的密码

public class search_ville extends Activity {
    static String purl;
    public static ArrayList < etablissement > Lesetab = new ArrayList < > ();
    private ListView lvH;
    public static etablissement etabSELECT;
    private ProgressDialog progressDialog;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.search_ville);
        lvH = (ListView) findViewById(R.id.listViewH);
        chargerJeuDessaie();
        rafraichirListView();

        lvH.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView < ? > parent, View view, int position, long hid) {
                afficherDesc(parent, view, position, hid);
            }
        });
    }

    public void afficherDesc(AdapterView < ? > parent, View view, int position, long hid) {
        search_ville.etabSELECT = (etablissement) parent.getItemAtPosition(position);
        Intent intent = new Intent(getApplicationContext(), DetailEtab.class);
        startActivity(intent);
    }

    private void chargerJeuDessaie() {
        progressDialog = progressDialog.show(this, "Gestion des etabs", "Telechargement en cours");
        MonAsyncTaskHttp monAsyncTaskHttp = new MonAsyncTaskHttp() {

            @Override
            protected void onPostExecute(Object o) {
                super.onPostExecute(o);
                search_ville.Lesetab.clear();
                try {
                    JSONArray jsonArray = new JSONArray(o.toString());
                    for (int i = 0; i < jsonArray.length(); i++) {
                        JSONObject jsonObject = jsonArray.getJSONObject(i);
                        etablissement etab = etablissement.factoryEtab(jsonObject);
                        search_ville.Lesetab.add(etab);

                        rafraichirListView();

                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                progressDialog.dismiss();
            }
        };
        monAsyncTaskHttp.execute("requete=getLesetablissement");
    }
    public void rafraichirListView() {
        ArrayAdapter < etablissement > etablissementsadapter = new ArrayAdapter < etablissement > (search_ville.this, android.R.layout.simple_list_item_1, Lesetab);
        lvH.setAdapter(etablissementsadapter);
    }
}

如果有人能解释如何更正此问题,那么onPostExecute方法中将出现NullPointerException。 据我所见,jsonArray和Lesetab还行。所以对象o可能是空的

-更新- 根据您提供的doInBackground方法代码,我认为抛出了一个IOException,但您没有注意到它,因为您在没有正确处理它的情况下捕获了它。 字符串chainejson保持为null并返回。然后调用onPostExecute,参数为null。这将导致NullPointerException


要找出到底出了什么问题,可以将IOException记录下来。

因此我必须指出它不是null?MonAsyncTaskHttp返回的doInBackground方法是什么?我认为当调用o.toString()受保护对象doInBackground(Object[]参数){if(MonAsyncTaskHttp.MonOkhttpclient==null){MonAsyncTaskHttp.MonOkhttpclient=new OkHttpClient();CookieManager cm=new CookieManager();cm.SetCookieMolicy(CookieMolicy.ACCEPT_ALL)时,会抛出NullPointerException;CookieHandler.setDefault(cm);}我在您的答案中看不到返回语句,这就是整个方法吗?我将把异步任务页面中的所有代码放在响应的可能副本中
04-22 16:45:48.815 21234-21234/ddec.applicationddec E/AndroidRuntime: FATAL EXCEPTION: main
      java.lang.NullPointerException
          at ddec.applicationddec.search_ville$2.onPostExecute(search_ville.java:68)
          at android.os.AsyncTask.finish(AsyncTask.java:631)
          at android.os.AsyncTask.access$600(AsyncTask.java:177)
          at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
          at android.os.Handler.dispatchMessage(Handler.java:99)
          at android.os.Looper.loop(Looper.java:176)
          at android.app.ActivityThread.main(ActivityThread.java:5419)
          at java.lang.reflect.Method.invokeNative(Native Method)
          at java.lang.reflect.Method.invoke(Method.java:525)
          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
          at dalvik.system.NativeStart.main(Native Method)