Heim > Java > javaLernprogramm > Wie greife ich über eine Aktivität auf Methoden in ViewPager-Fragmenten zu und führe sie aus?

Wie greife ich über eine Aktivität auf Methoden in ViewPager-Fragmenten zu und führe sie aus?

Patricia Arquette
Freigeben: 2024-11-04 09:52:01
Original
301 Leute haben es durchsucht

How to Access and Execute Methods in ViewPager Fragments from an Activity?

Auf die ViewPager-Fragmentmethode über die Aktivität zugreifen

In diesem Szenario wird ein ViewPager mit sechs Fragmenten innerhalb einer Aktivität implementiert. Das Wischen zwischen Fragmenten ist deaktiviert, daher wird eine Schaltfläche verwendet, um das aktuelle Fragment zu ändern. Eine GET-Anfrage wird an den Server gesendet und die Antwortdaten werden in jedem Fragment angezeigt, nachdem der Swipe abgeschlossen ist.

Erster Ansatz (mit setUserVisibleHint)

Zunächst wird der Die Methode setUserVisibleHint wurde verwendet, um die GET-Anfrage auszulösen, wann immer ein Fragment sichtbar wurde. Dieser Ansatz führte jedoch aufgrund der sofortigen Ausführung der Anfrage zu einer Verzögerung in der Wischanimation.

Zweiter Ansatz (Verwendung von OnPageChangeListener)

Um die Animationsverzögerung zu überwinden wurde dem ViewPager ein OnPageChangeListener hinzugefügt. Dieser Listener verfolgt den Bildlaufstatus der Seite und sendet die GET-Anfrage, wenn das gewünschte Fragment vollständig sichtbar ist (d. h. der Bildlaufstatus entspricht IDLE).

Problem und Lösung

Das Der zweite Ansatz hat gut funktioniert, aber beim Ausführen von sendGetRequest() ist eine NullPointerException aufgetreten. Der Grund dafür war, dass die Fragmentreferenz nicht ordnungsgemäß abgerufen wurde. Um dieses Problem zu beheben, mussten Verweise auf die Fragmente in der Methode „instantiateItem“ des FragmentPagerAdapters gespeichert werden. Dann könnte innerhalb des OnPageChangeListener anstelle der Erstellung eines neuen Fragments das referenzierte Fragment aus dem ViewPagerPagerAdapter verwendet werden.

Aktualisierter Code für ViewPager2 (Kotlin)

<code class="kotlin">viewPager.registerOnPageChangeCallback(
            object: ViewPager2.OnPageChangeCallback() {
                override fun onPageSelected(position: Int) {
                    super.onPageSelected(position)
                    val frag: Fragment = mAdapter.fragments[position]
                    if (frag != null && frag is FragmentTwo) {
                        (frag as FragmentTwo).sendGetRequest()
                    }
                }
            }
    )</code>
Nach dem Login kopieren

Hier bezieht sich mAdapter auf den FragmentPagerAdapter, der im ViewPager2 verwendet wird.

Das obige ist der detaillierte Inhalt vonWie greife ich über eine Aktivität auf Methoden in ViewPager-Fragmenten zu und führe sie aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage