Tut mir leid wegen meines dummen Titels, ich werde ihn unten klar beschreiben:
Situation
Ich habe ein ViewPager
mit 4 OnBoardingFragment
s drin. Jedes Fragment
hat genau dasselbe Layout, das inflated
von derselben XML-Datei ist. Dieses Layout enthält eine Button
, die ich btnNext
genannt habe, und ich habe die OnClickListener
dafür gesetzt.
Funktion getItem
meines PagerAdapter
Funktionen von OnBoardingFragment
:
Das Problem ist
Als meine App gestartet wurde, zeige ich zuerst zuerst Fragment
, dann drückte ich die Methode Button
und triggerte onItemClick()
, und die Methode wurde auf die letzte Fragment
.
Melden Sie sich an, wenn Sie create Fragment
Melden Sie sich an, wenn onClickListener()
ausgelöst wurde
Melden Sie sich an, wenn btnNext
initialisiert wurde:
Frage
Warum passiert das und wie löst man es?
Wenn der Benutzer auf die Schaltfläche klickt, senden Sie dieses Ereignis zurück an die Aktivität (oder wo Sie eine Referenz des Viewpagers haben). Von dort aus sollten Sie prüfen, welches Fragment im viewpager sichtbar ist (siehe Bestimmen, wann sich ein ViewPager ändert Seiten und Wie kann man feststellen, wann das Fragment sichtbar wird? ViewPager ) und dann wissen Sie, was Sie mit diesem Ereignis tun können.
Sie können eine Listener-Schnittstelle verwenden, um das Fragment abzurufen und eine Methode zum Abrufen der Position zu erstellen und sie an den Ort zu senden, an dem Sie den viewpager deklariert haben 1. Erstellen Sie zunächst ein anonymes Objekt dieser Schnittstelle in diesem Fragment 2. Übergeben Sie dieses Objekt zweitens an PagerAdapter 3. Drittens können Sie dieses Objekt im PagerAdapter verwenden und die Methode aufrufen, die in der Schnittstelle mit der Fragmentposition verwendet wurde 4. Sie können den Fragment-Layout-Behandlungscode in die Methode innerhalb der anonymen inneren Klasse dieser Schnittstelle einfügen.
Bitte versuchen Sie es, es wird funktionieren. Ich hoffe, du kannst verstehen, was ich gesagt habe.
Benutze case 3:
mit einem break
am Ende und in default
, setze einfach eine einzige break
und keine andere Aussage.
fügen Sie break-Anweisung im Standardblock hinzu und übergeben Sie auch argument end = false, falls 0,1,2
Tags und Links android android-fragments android-viewpager