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

  • 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...

  • 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!