首页 > 解决方案 > BottomsheetdialogFragment 内的 Viewpager 不显示片段

问题描述

我已经在OptionsFragment中实现了 BottomSheetDialogFragment 。在其中我添加了 viewpager,因此我可以为 SignInSignUpOptionsFragment 进行滑动动画,我想在 viewpager 和按钮中添加该动画以使用不同的选项滑动 SignInSignUpOptionsFragment。SignInSignUpOptionsFragment 具有登录选项(+ 社交帐户)。

帐户片段

  login_btn.onClickListener( v -> { 
  OptionsFragment optionsFragment = new OptionsFragment(true);
  optionsFragment.show(getChildFragmentManager(), "Login");
  });

选项片段

  class OptionsFragment(private val isLogin: Boolean) : BottomSheetDialogFragment() {
private var fragmentView: View? = null
lateinit var viewPager: ViewPager

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
    fragmentView = inflater.inflate(R.layout.signup_popover, container, false)
    val pagerAdapter = MyPagerAdapter(childFragmentManager)
    viewPager = fragmentView!!.findViewById(R.id.vpPager)
    viewPager.adapter = pagerAdapter
    viewPager.currentItem = 0
    return fragmentView
}

}

  class MyPagerAdapter(fragmentManager: FragmentManager?) : FragmentStatePagerAdapter(fragmentManager!!, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
// Returns total number of pages
override fun getCount(): Int {
    return NUM_ITEMS
}

// Returns the fragment to display for that page
override fun getItem(position: Int): Fragment {
   return when(position) {
        0 ->  SignInSignUpOptionsFragment.newInstance(true)
        1 ->  SignInSignUpOptionsFragment.newInstance(false)
        else -> null!!
    }
}

// Returns the page title for the top indicator
override fun getPageTitle(position: Int): CharSequence? {
    return "Page $position"
}

companion object {
    private const val NUM_ITEMS = 2
}

这是我的布局文件

<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/utilityGrey2">

<androidx.viewpager.widget.ViewPager
    android:id="@+id/vpPager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="parent" />

<LinearLayout
    android:id="@+id/login_no_account_group"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginBottom="24dp"
    android:layout_marginLeft="21dp"
    android:layout_marginRight="21dp"
    android:layout_marginTop="52dp"
    android:orientation="vertical"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/vpPager">

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/switch_sign_up_description"
        style="@style/HelpText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="@string/no_account" />

    <androidx.appcompat.widget.AppCompatTextView
        android:id="@+id/switch_sign_up"
        style="@style/HelpText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="@string/sign_up_caps" />

</LinearLayout>

但我无法在 ViewPager 中看到任何片段。只有底部的“login_no_account_group”显示为底部表。我不想使用 TabLayout,而是想在 switch_sign_up click 上更改页面

   viewPager.currentItem = 1

可能吗 ?任何其他替代品也欢迎

标签: androidandroid-fragmentskotlinandroid-viewpagerandroid-animation

解决方案


推荐阅读