Anzeigeproblem bei Folgeaufruf eigener App

  • Hallo,


    ich habe meine erste App geschrieben und erwartungsgemäß damit auch Problem. Vielleicht kann mir hier jemand helfen.


    Die App wertet eine Textdatei mit Personen- und Ereignis bezogene Daten aus. In Jeder Zeile dieser Textdatei steht

    • eine Kennung für das auszuwertende Ereignis (Geburts-, Namens- oder Hochzeitstag),
    • das Datum für das Ereignis und
    • der bzw. die Namen der jeweiligen Person.

    Ein Javaprogramm erstellt für die Ausgabe einen Textstring aller Ereignisse für die nächsten 14 Tage. Dieser Textstring wird von der App ausgegeben.


    Das alles funktioniert einwandfrei. Die Ausgabe könnte zum Beispiel so aussehen:


    Hans hat am 01.02. Geburtstag
    und wird 78 - Nur noch 6 Tage!


    Monika hat am 03.02. Namenstag,
    nur noch 8 Tage!


    Wird diese im Hintergrund noch aktive App allerdings ein weiteres Mal aufgerufen, dann bekomme ich folgende Anzeige:


    Hans hat am 01.02. Geburtstag
    und wird 78 - Nur noch 6 Tage!


    Hans hat am 01.02. Geburtstag
    und wird 78 - Nur noch 6 Tage!


    Hans hat am 01.02. Geburtstag
    und wird 78 - Nur noch 6 Tage!


    Monika hat am 03.02. Namenstag,
    nur noch 8 Tage!


    Monika hat am 03.02. Namenstag,
    nur noch 8 Tage!


    Monika hat am 03.02. Namenstag,
    nur noch 8 Tage!


    Nur nach jedem weiteren Aufruf verdoppelt sich die Anzahl der Einträge für jede Person.


    Ich habe schon an die Möglichkeit gedacht, bei jedem Aufruf der App erst einmal den Screen zu löschen, aber leider nichts gefunden. Wie kann ich dieses Verhalten meiner App unterbinden.


    Die App wurde unter AndroidStudio entwickelt. Getestet habe ich mit Samsung Galaxy S3 mini. Über diverse Emulatoren des AVD-Managers hat die Ausgabe ebenfalls funktioniert. Zur Zeit bekomme ich damit aber weder eine Ausgabe noch eine Fehlermeldung.


    Meine MainActivity.java sieht so aus:



    MfG, kodela

    Einmal editiert, zuletzt von kodela () aus folgendem Grund: Nachtrag: Eben ist mir aufgefallen, dass diese Mehrfachausgabe nur dann auftritt, wenn Ereignisse angezeigt werden. Wird für den Ausgabezeitraum kein Ereignis gefunden, gibt das Javaprogramm einen Hinweis darauf zurück. Dieser Hinweis wird auch bei Folgeaufrufen nur einmal gezeigt.

  • Hallo,


    eben habe ich festgestellt, dass immer dann, wenn während der Auswertezeit keine Ereignisse anfallen und von Jubeltage.java nur ein entsprechender Hinweis zurück gegeben wird, bei einem Folgeaufruf der App dieser Hinweis korrekt nur einmal angezeigt wird. Das macht die Sache für mich noch mysteriöser.


    MfG, kodela

  • Hallo,


    mittlerweile habe ich auch herausgefunden, dass das Problem bei der Javadatei Jubeltage.java liegt.


    Obwohl in der MainActivity.java der String ausgabe mittlerweile zurück gesetzt wird (ausgabe = "";) und in Jubeltage.java bereits von Anfang an zurück gesetzt wurde, liefert Jubeltage.java bei einem zweiten Aufruf das dubiose Ergebnis.


    Den Grund dafür habe ich gefunden, die Ursache noch nicht. Nach Dem Einlesen der Daten wir der Buffer nicht geleert. Wenn ich mehr weiß, werde ich es hier berichten.


    MfG, kodela

  • Hallo,


    leider weiß ich noch nicht mehr, hoffe aber, dass jemand von Euch mehr sieht, als ich. Es geht um folgenden Code, über den die zeilenorientierte Textdatei Zeile für Zeile eingelesen und anschließend jede Zeile ausgewertet wird. Hier der Code:



    in der while-Schleife ab Zeile 189 wird Zeile für Zeile eingelesen und in Zeile 193 an parseZeile() zur Auswertung übergeben.


    Beim ersten Aufruf werden genau alle Zeilen gelesen. Beim zweiten Aufruf wird die dreifache, bei dritten Aufruf die sechsfache Anzahl an Zeilen eingelesen .


    Wer findet dafür eine Erklärung?


    MfG, kodela

  • Ich würde eher sagen: So viel wie nötig, so wenig wie möglich.
    Static hat schon seine Anwendungsfälle ;)

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

Jetzt mitmachen!

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