Swipe navigation of fragments w/ ViewPager2

  • 2 Antworten
  • Neuester Beitrag
Diskutiere Swipe navigation of fragments w/ ViewPager2 im Android App Entwicklung im Bereich Betriebssysteme & Apps.
Tiefkuehlpizza

Tiefkuehlpizza

Neues Mitglied
Hallo Zusammen und vielen Dank für den ein oder anderen Hinweis.

Ich versuche mich ein bissel an der Android Entwicklung mit Kotlin.
Es ist ein Freizeitprojekt.
Ich komme von der HW nahen Programmierung.
Generell fällt es mir schwer die Architektur und den Informationsfluss in der OOP zu verstehen.

Zum Problem: Ich habe eine "Rumspiel" App mit einer Bottom Bar Navigation mit 4 Einträgen.
Jeder Eintrag referenziert auf ein Fragment, welches über eine FragmentContainerView angezeigt wird.
Als Nächstes wollte ich gerne Swipe Navigation einbauen - einfach wischen um uffs andere Fragment zu kommen.
Mit einer RecycleView hat es bereits funktioniert, jetzt möchte ich die Fragmente wechseln.
Um das erstmal zu probieren erschaffe ich 4 Beispielfragmente, welche ich in der activity_main in einem ViewPager2 Element anzeigen lassen möchte.
Das funktioniert leider noch nicht.
Vielleicht könnt ihr mir helfen woran es liegt?

//Anzeige über Layout activity_main.xml
Code:
 <androidx.viewpager2.widget.ViewPager2

android:id="@+id/pager"

android:layout_width="match_parent"

android:layout_height="300dp"

...

/>



<androidx.fragment.app.FragmentContainerView

android:id="@+id/nav_host_fragment"

android:name="androidx.navigation.fragment.NavHostFragment"

android:layout_width="match_parent"

android:layout_height="300dp"

...

/>
//Fragment example to navigate through
Layout => fragment_screen_slide_page.xml
Code:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/content"

android:layout_width="match_parent"

android:layout_height="match_parent" >



<TextView style="?android:textAppearanceMedium"

...

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="@color/ambientShadowColor"

android:text="Hello" />

</ScrollView>
//Ich erschaffe meine "Rumspiel" Fragmente => ScreenSlidePagerActivity.kt
Code:
private const val NUM_PAGES = 4



class ScreenSlidePagerActivity : FragmentActivity() {



/**

* The pager widget, which handles animation and allows swiping horizontally to access previous

* and next wizard steps.

*/

private lateinit var viewPager: ViewPager2



public override fun onCreate(savedInstanceState: Bundle?) {

DebugLog("Sliding", " :1")

super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)



// Instantiate a ViewPager2 and a PagerAdapter.

viewPager = findViewById(R.id.pager)



// The pager adapter, which provides the pages to the view pager widget.

val pagerAdapter = ScreenSlidePagerAdapter(this)

viewPager.adapter = pagerAdapter

}



...



/**

* A simple pager adapter that represents 4 ScreenSlidePageFragment objects, in

* sequence.

*/

private inner class ScreenSlidePagerAdapter(fa: FragmentActivity) : FragmentStateAdapter(fa) {

override fun getItemCount(): Int = NUM_PAGES



override fun createFragment(position: Int): Fragment = ScreenSlidePageFragment()

}

}
ScreenSlidePageFragment.kt
Code:
class ScreenSlidePageFragment : Fragment() {



override fun onCreateView(

inflater: LayoutInflater,

container: ViewGroup?,

savedInstanceState: Bundle?

): View = inflater.inflate(R.layout.fragment_screen_slide_page, container, false)

}
Ich gucke mir das die Tage auch nochmal an, aber momentan funktioniert es nicht.

Vielen Dank für Rückmeldung!
Pizza
 
Zuletzt bearbeitet von einem Moderator:
Bearbeitet von hagex - Grund: hagex
Tiefkuehlpizza

Tiefkuehlpizza

Neues Mitglied
Ich habe das Ganze mal in ein leeres Projekt geholt um sicherzugehen, dass nichts meinen ViewPager2 Versuch mit Fragmenten beeinflusst. Identisches Verhalten. Leeres ViewPager2 Element.

Muß ich in der activity_main.kt in onCreate noch was reinschreiben?...
Eine Instanz von ScreenSlidePagerActivity erschaffen?...
Wie wird die Klasse denn getriggert?

Gruß
Pizza
 
Tiefkuehlpizza

Tiefkuehlpizza

Neues Mitglied
Ich habe es hinbekommen.
Root cause war die unglückliche Definition von fragment_screen_slide_page.xml.
Im ViewPager2 wurden mir damit weiße Fragmente auf weißem Hintergrund angezeigt und ich habe nicht gemerkt, dass ich eigentlich schon navigiere.
Nachdem ich die <scrollView auf <LinearLayout geändert habe, wurde mir der Inhalt mittig angezeigt und war sichtbar.
===

Jetzt versuche ich gerade die BottomBarNavigtion zusammen mit der Swipe Navigation zu nutzen.
Aber es ist zu spät zum denken.
Dazu gibt es auch wieder Tutorials.
Gucken wir mal.
Ich melde mich dann verzweifelt wieder.

Viele Grüße
Pizza
 
Ähnliche Themen - Swipe navigation of fragments w/ ViewPager2 Antworten Datum
0
1
2