Anzeige der Seitennummer im ViewPager

  • Hallo Profis

    Ich schreibe meine erste App (Kochrezeptsammlung) und habe dazu in AndroidStudio die "TabbedActivity" und dann "SwipeViews (ViewPager)" gewählt, um mir pro Seite ein Rezept anzuzeigen. Soweit funktioniert alles. Nun möchte ich, dass beim Blättern durch die Seiten kurz die Seitennummer mit dem Befehl "Toast" angezeigt wird. Das funktioniert allerdings nur fast: Starte ich mit der ersten Seite, zeigt Toast zunächst wie gewünscht "Seite 1", nach 2 Sekunden erscheint aber ohne mein Dazutun ein weiterer Toast mit Inhalt "Seite 2". Offensichtlich wurde im Hintergrund schon mal im Voraus Seite 2 erzeugt und damit in "onCreateView" ein weiterer Toast ausgelöst. Dieser Effekt bleibt auch beim Weiterblättern erhalten. Wie mache ich das aber besser?

    Meine Programmstruktur sieht bis jetzt folgendermassen aus:

    Danke für jeden Hinweis! Bernhard

    Einmal editiert, zuletzt von Desperate (22. Juli 2018 um 00:19)

  • Hi
    du solltest den Toast in der Event Methode OnClick machen also wenn du dienächste Seite anzeigst nicht wenn sie im Hintergrund geladen wird.
    Das müsste dann in der von FragmentPagerAdapter abgeleiteten Klasse sein.

  • Hi da du auf meinen Beitrag nicht Antwortest noch eine Ergänzung.
    Versuche es in der m

    @Override
    public CharSequence getPageTitle(int position) { //toast}in deiner pager Klasse mit posiiton+1 da der pager mit 0 anfängt.

  • Hallo jogimuc

    Danke für deine beiden Antworten. Entschuldige meine Reaktionsgeschwindigkeit, hatte einen computerfreien Familiensonntag :) ...
    Deine zweite Idee war vielversprechend, zumal ja AndroidStudio die Methode getPageTitle schon im erzeugten Template enthält. Aber mein Code

    Code
    public CharSequence getPageTitle(int position) {
      Toast.makeText(getApplicationContext(), String.valueOf(position+1), Toast.LENGTH_SHORT).show();
      return null;
    }

    produziert KEINEN sichtbaren Toast. Hab ich da den falschen Context (1. Parameter) angegeben?

    Mit deiner ersten Antwort kann ich als Anfänger noch nicht viel anfangen. Hab ich überhaupt ein Event OnClick, wenn ich durch die Seiten wische? Wenn du der Meinung bist, dass es so auch klappen sollte, könntest du deine erste Idee etwas detailierter für mich erläutern? Danke schon jetzt.

    Das Problem ist also immer noch ungelöst...

  • Neuste Erkenntnis: Habe den Toast durch einen Beep ersetzt: Ersetze ich den Toast in Antwort 1, so höre ich beim Wischen zu neuen Seiten den Pieps. Ersetze ich den Toast in Antwort 4, höre ich nichts. Wird getPageTitle gar nie aufgerufen?

  • schade das es so einfach nicht geht. Kann dir da jetzt nicht helfen dazu muss ich mich erst in den viewpager einlesen den benutze ich fast nie.
    Aber eine onklick in dem padger muss es geben.

  • Hätte da ne Tip, der Toast ist da zu träge bzw. zu langsam.

    Hab da auch aktuell ne App mit der ich mit Swipe und ViewPager durch mehrer Fragmente Switche und oben wird immer der Raum Name angezeigt und bei jedem swipe (wisch) wird der Raum Name geändert.

    In meinem Fall hole ich mir vom "class SectionsPagerAdapter extends FragmentStatePagerAdapter" die Position.
    Ich ändere dann ein Text Element in meinem fall dann der SubTitle von der Toolbar.

    setToolbarSubTitle(getString(R.string.main_fragment_name));

    Das kannste auch mit jedem anderen Text element machen.

    Du könntest dort ne schleife machen und immer + 1 dazu rechnen.
    Das Text Element läst sich schneller und effektiver ändern, als eine Toast Nachricht.

  • Hallo Ryan

    Bingo, that's it! Danke für den Tipp (und auch für die Mühe von jogimuc)! In einem Punkt bin ich allerdings nicht deiner Meinung: Toasts sind nicht zu träge: Ein neuer Toast überschreibt sofort den alten, so dass die Anzeige auch beim schnellen Wischen aktuell ist. Genau wie dein Textelement. Aber der Toast hat noch den Vorteil, dass er den ganzen Screen freigibt für die Anzeige des Rezepts.

    Als Anfänger interessiert mich jetzt aber auch: Woher weiss man, dass es einen OnPageChangeListener gibt und eine Methode onPageSelected? Wo sind solche Dinge dokumentiert?

Jetzt mitmachen!

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