gpt4 book ai didi

android - 导航组件 - ViewPager fragment 中的 findNavController 不起作用

转载 作者:行者123 更新时间:2023-12-04 01:35:09 44 4
gpt4 key购买 nike

我有一个带有 3 个菜单选项(主页、服务和更多)的底部导航。
主页选项卡 fragment 包含 TabLayout 和 ViewPager。

ViewPager 有 2 个 fragment - CurrentDetailFargment 和 PreviousDetailFragment。

ViewPager Works,之后当我使用 findNavController() 应用单击 CurrentDetailFargment 的按钮时,我得到了异常。

Reference

导航支付屏幕

findNavController().
navigate(R.id.action_currentBillFragment_to_paymentOptionsFragment)

异常(exception)
java.lang.IllegalArgumentException: navigation destination XXXXXXX:id/action_currentBillFragment_to_paymentOptionsFragment is unknown to this NavController
at androidx.navigation.NavController.navigate(NavController.java:789)
at androidx.navigation.NavController.navigate(NavController.java:730)
at androidx.navigation.NavController.navigate(NavController.java:716)
at androidx.navigation.NavController.navigate(NavController.java:704)
at com.bses_yamuna.user.home.currentbill.view.CurrentBillFragment.navigateToPayNow

根据异常(exception) - 我没有在我的图表中提到“action_currentBillFragment_to_paymentOptionsFragment”ID。但我已经宣布它是图表。此图与底部导航一起使用。

请让我知道我解决了这个问题。

Activity 布局科-
    <fragment
android:id="@+id/navigationHost"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toTopOf="@+id/bottomNavigation"
app:layout_constraintTop_toBottomOf="@+id/constraint_top"
app:navGraph="@navigation/menu_navigation" />

<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottomNavigation"
style="@style/Widget.BottomNavigationView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/windowBackground"
app:itemIconTint="@drawable/bottom_navigation_item_colors"
app:itemTextColor="@drawable/bottom_navigation_item_colors"
app:labelVisibilityMode="labeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:menu="@menu/bottom_nav_menu_modify" />

适配器
 class ViewPagerAdapter (fragmentManager:FragmentManager, private val titleList: ArrayList<String>): FragmentStatePagerAdapter(fragmentManager,BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT ) {

override fun getItem(position: Int): Fragment {
return if(position==0)
CurrentBillFragment()
else
PreviousBillFragment()

}

override fun getCount(): Int {
return titleList.size
}

override fun getPageTitle(position: Int): CharSequence? {
return titleList[position]
}
override fun getItemPosition(value: Any): Int {
return PagerAdapter.POSITION_NONE
}

}

在 ViewPager- 上设置适配器
private fun setupViewPager() {
val titles = ArrayList<String>()
titles.add(getString(R.string.current_bill_detail))
titles.add(getString(R.string.previous_bill_detail))
val adapter = ViewPagerAdapter(childFragmentManager, titles)
mBinding.tabLayout.setupWithViewPager( mBinding.pager)
mBinding.pager.adapter = adapter

}

menu_navigation.xml-
   <fragment
android:id="@+id/currentBillFragment"
android:name="XXXXX.view.CurrentDetailFargment "
tools:layout="@layout/fragment_current_bill">

<action
android:id=
"@+id/action_currentBillFragment_to_currentBillSummaryFragment"
app:destination="@+id/currentBillSummaryFragment" />

</fragment>
<fragment
android:id="@+id/paymentOptionsFragment"
android:name="XXXXX.view.PaymentOptionsFragment"
tools:layout="@layout/fragment_payment_option"/>

最佳答案

Action 应该在包含 ViewPager 和 TabLayout 的 fragment 中定义。

我在 ViewPager 和 TabLayout 的宿主 fragment 中移动了操作“action_currentBillFragment_to_currentBillSummaryFragment”。

关于android - 导航组件 - ViewPager fragment 中的 findNavController 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59825694/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com