Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

fragment inside fragment {Kotlin}

is there any possible way to put a fragment inside a fragment?

I tried to put a viewPager in a fragment and write the code on OnCreatedView but it gives me error!!!

I tried this one but the fragments goes for every fragment in the activity!

pageradapter.kt

class pagerAdapter(fm:FragmentManager):FragmentStatePagerAdapter(fm){

override fun getItem(position: Int): Fragment? {
     return when(position){
        0-> Fragment1()
        1-> Fragment2()
        else -> null
    }

}


override fun getCount(): Int {
    return 2
}
 fun rotatePosition(position: Int):Int{
    return (count -1)-position
}

class pagerAdapter(fm:FragmentManager):FragmentStatePagerAdapter(fm){

override fun getItem(position: Int): Fragment? {
     return when(position){
        0-> Fragment1()
        1-> Fragment2()
        else -> null
    }

}


override fun getCount(): Int {
    return 2
}
 fun rotatePosition(position: Int):Int{
    return (count -1)-position
}

pageradapter2.kt

class pagerAdapter2(fm: FragmentManager):FragmentStatePagerAdapter(fm){

override fun getItem(position: Int): Fragment? {
    return when(position){
        0-> BlankFragment()
        else->null
    }
}

/**
 * Return the number of views available.
 */
override fun getCount(): Int {
    return 1
}

MainActivity.kt

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val pagerAdapter2 = pagerAdapter2(supportFragmentManager)
    val pager1= findViewById<View>(R.id.pager2) as ViewPager
    pager1.adapter = pagerAdapter2

    val adapter = pagerAdapter(supportFragmentManager)
    val pager = findViewById<View>(R.id.pager) as ViewPager
    pager.adapter = adapter
    pager.setCurrentItem(adapter.rotatePosition(0), false)
}

P.S. The first Answer solved my problem.

like image 515
Abdulrhman Alanazi Avatar asked Oct 01 '18 22:10

Abdulrhman Alanazi


People also ask

Which of the following is used to add fragment inside fragment?

There are two ways to add a fragment to an activity: dynamically using Java and statically using XML. Before embedding a "support" fragment in an Activity make sure the Activity is changed to extend from FragmentActivity or AppCompatActivity which adds support for the fragment manager to all Android versions.

What are nested fragments?

Fragments represent a behavior or portion of UI in an Activity. Fragments are mostly used in tablets to divide screen and utilize screen space in efficient way. With Android 4.2 nested fragments are introduced, with which now you can embed fragments inside fragments.


1 Answers

If you are adding fragment for an activity you use either fragmentManager or supportFragmentManager.

If you are adding fragment for a fragment - you should use childFragmentManager, accessing fragmentManager from fragment will lead to using the same one that activity does.

like image 182
Maksym V. Avatar answered Nov 15 '22 09:11

Maksym V.