android - 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
可能吗 ?任何其他替代品也欢迎
解决方案
推荐阅读
- python - 使用决策树时出现内存错误,因为输入文件太长
- ios - NSPersistentCloudKitContainer 被多个进程写入
- email - 从工作表发送一封电子邮件,而不是为同一个人发送多封电子邮件
- google-cloud-platform - 为什么即使在确认后消息仍然被拉取?
- java - Android Studio 应用程序 - java.lang.IllegalStateException:无法执行 android:onClick 的方法 - 不是空指针异常
- ios - 我应该使用 Expo 来制作一个小的跨平台应用程序吗?
- python - 如何将 pandas groupby 部分通过管道传送到 seaborn distplot?
- tfs - RElease 管道任务的 VSTS 条件
- python - 在 3+ 列数据框中的 pandas 中每个组的第一个和最后一个位置之前添加行
- c# - Upload Trace Log Files Directly to Azure