自定义选项卡适配器没有显示任

时间:2018-04-07 10:06:58

标签: android kotlin

我有以下的PagerAdapter来显示我的Android片段中的标签:

class CustomTabPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) {
    override fun getItem(position: Int): Fragment? {
        var fragment: Fragment? = null
        if (position == 0) {
            fragment = AchievOngoingFragment()
        } else if (position == 1) {
            fragment = AchievDoneFragment()
        }
        return fragment
    }

    override fun getCount(): Int = 2

    override fun getPageTitle(position: Int): CharSequence? {
        var title: String? = null
        if (position == 0) {
            title = "Ongoing"
        } else if (position == 1) {
            title = "Done"
        }
        return title
    }
}

我的ProfileFragment就是这样设置的:

internal lateinit var viewpageradapter:CustomTabPagerAdapter //Declare PagerAdapter

override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)

    viewpageradapter = CustomTabPagerAdapter(activity.supportFragmentManager)

    viewPager.adapter = viewpageradapter  //Binding PagerAdapter with ViewPager
    tab_layout.setupWithViewPager(this.viewPager)
}

使用以下布局:

<android.support.design.widget.TabLayout
    android:id="@+id/tab_layout"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    app:tabGravity="fill"
    app:tabMode="fixed"
    app:tabSelectedTextColor="@color/black"
    app:tabTextColor="@color/black"
    app:tabIndicatorColor="@color/colorPrimary"/>

<android.support.v4.view.ViewPager
    android:id="@+id/viewPager"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    android:layout_below="@id/tab_layout"/>

选项卡显示完美,但ViewPager的内容为空时,它应该是与每个选项卡关联的片段布局的内容(即AchievOngoingFragmentAchievDoneFragment

我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

我认为你应该在这里使用ChildFragmentManager

CustomTabPagerAdapter(activity.childFragmentManager)

答案 1 :(得分:0)

你的适配器代码看起来很好,我猜你的问题与你的碎片有关。

选中此repo,它有一个有效的例子。

我建议您先从那里复制Fragment1Fragment2,然后在适配器中使用它们来找到问题。