0

I develop an application that must retrieve information on a mysql database, When I execute my aplication this works but it blocks when displaying a listview.

Here is my code

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);
    }
}

Error log :

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)

If anyone can explain how to correct this

Bertrand Martel
  • 42,756
  • 16
  • 135
  • 159
Drägniir
  • 9
  • 1
  • 1
  • 7
  • Possible duplicate of [What is a NullPointerException, and how do I fix it?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it) – Mehmet K Apr 22 '17 at 15:08

1 Answers1

0

You get a NullPointerException in the onPostExecute methode. jsonArray and Lesetab are ok from what I can see. So Object o is probably null.

-Update- Based on the doInBackground method Code you provided I think there is an IOException thrown, but you don't notice it, because you catch it without handling it properly. String chainejson stays null and is returned. Then onPostExecute is called with null as parameter. This causing the NullPointerException.

To find out what's really going wrong could log the IOException.

mojth
  • 44
  • 3