2017-04-22 2 views
0

Ich entwickle eine Anwendung, die Informationen über eine MySQL-Datenbank abrufen müssen, Wenn ich meine Anwendung ausführen funktioniert das aber es blockiert, wenn eine Listview angezeigt wird.Android Fehler Async-Aufgabe

Hier ist mein 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); 
    } 
} 

Fehlerprotokoll:

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) 

Wenn jemand kann erklären, wie diese

+0

Mögliche Duplikate von [Was ist eine NullPointerException, und wie behebe ich es?] (Http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix -it) –

Antwort

0

Sie eine Nullpointer im OnPostExecute Methode erhalten zu korrigieren. JsonArray und Lesetab sind ok von dem, was ich sehen kann. Also Objekt 0 ist wahrscheinlich null.

-Update- Basierend auf der DoInBackground-Methode Code, die Sie bereitgestellt haben Ich denke, es ist eine IOException ausgelöst, aber Sie bemerken es nicht, weil Sie es ohne richtig behandeln fangen. String chainejson bleibt null und wird zurückgegeben. Dann wird onPostExecute mit null als Parameter aufgerufen. Dies verursacht die NullPointerException.

Um herauszufinden, was wirklich schief läuft, könnte die IOException protokollieren.

+0

Und so muss ich sagen, dass es nicht null ist? –

+0

Was gibt die DoInBackground-Methode von MonAsyncTaskHttp zurück? Ich denke, die Nullpointer wird geworfen, wenn Sie anrufen o.toString() – mojth

+0

geschützten Objekt doInBackground (Object [] params) { if (MonAsyncTaskHttp.MonOkhttpclient == null) { MonAsyncTaskHttp.MonOkhttpclient = new OkHttpClient(); CookieManager cm = neuer CookieManager(); cm.setCookiePolicy (CookiePolicy.ACCEPT_ALL); CookieHandler.setDefault (cm); ; } –