Custom ListView/Thread crashed

  • Hallo liebe Forum Nutzer.


    Ich habe ein ganz eigenartiges Problem.
    Und zwar: Ich habe einen Tab, der einen ListView beinhaltet. Für den ListView habe ich eine eigene Adapter Klasse geschrieben.


    In meiner onTabChanged Methode mach ich nun Folgendes:
    EIn ProgressDialog wird angezeigt.
    In dem Thread führe ich nun ein paar Methoden aus, der handler soll dann eine Message senden um die Ui upzudaten.


    progress = ProgressDialog.show(FrankstahlActivity.this, "Loading...Pleas Wait", "", false, false);
    new Thread()
    {
    public void run()
    {
    segments.removeAllElements();
    request.doRequestSegments();
    handler.sendEmptyMessage(10);
    }
    }.start();


    der Handler sieht so aus:
    hier soll der neue Adapter gesetzt werden.


    Handler handler = new Handler()
    {
    public void handleMessage(android.os.Message msg)
    {
    super.handleMessage(msg);


    switch (msg.what)
    {
    case 10:
    segment.setAdapter(segmentAdapterS);
    progress.dismiss();
    break;
    }


    }
    };


    Nun zum Problem: bei meiner App beobachte ich ein eigenartiges Verhalten.
    Sobald der Tab gewechselt wird, werden die Methoden aufgerufen, alles funktioniert einwandfrei.
    Wenn dies jedoch mehrmals hintereinander gemacht wird so crashed die App.
    Ausgegeben wird eine ArrayOutOfBoundsException.
    Wenn ich nun den Fehler finden möchte und das Programm durchdebugge so passiert kein crash.
    Nun weiß ich leider nicht mehr weiter und hoffe einer von euch kann mir vlt. helfen =)

  • Wenn ich nun den Fehler finden möchte und das Programm durchdebugge so passiert kein crash.


    Was heißt bei dir "durchdebuggen"? Wenn deine App normal im Debugger läuft und die Exception nicht auftritt, dann hast du ein echtes Problem. Wenn die Exception nur beim Singlestepping nicht auftritt: einfach mal ohne Unterbrechung laufen lassen und schauen, wo der Debugger im Falle der Exception stehen bleibt.

  • Danke schon mal für deine Antwort.


    Ich hab die App Step für Step durchdebugged.
    Meine Idee war dann, dass es vlt am kritischen Bereich liegt bzw. dass ich halt auf Daten zugreife auf die ich in dem Moment noch nicht zugreifen darf
    und da sich beim Debuggen ja alles ein bisschen verzögert funktioniert da auch alles einwandfrei.


    Dann hab ich aber noch weiter und weiter probiert und folgendes Problem entdeckt: Es tritt eine IllegalStateException auf (komischwerweise nur am Device: Galaxy Note am Emulator nicht)
    Die genauer Fehlermeldung beschreibt, dass der Adapter geändert wurde aber der ListView nicht darüber informiert wurde.
    Daher habe ich diese Methode verwendet: segmentAdapterS.notifyDataSetChanged();
    um den ListView zu informieren, dass sich etwas an den Daten geändert hat...funktioniert am Gerät leider immer noch nicht, am Emulator gehts einwandfrei.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!