我不确定我在这里做错了什么。简单的设置,带有由内部底部栏控制的片段的单个活动,到目前为止一切都很好。开始片段有一个按钮,里面应该导航到另一个片段。
这是我的片段类中按钮的 onclicklistener:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
add_step_fab.setOnClickListener {
Navigation.findNavController(view).navigate(R.id.fragmentAtoB)
}
}
这是我在 navigation.xml 中的操作:
<fragment android:id="@+id/navigation_main" android:name="com.test.test.fragments.AFragment"
android:label="Fragment A" tools:layout="@layout/fragment_a">
<action android:id="@+id/fragmentAtoB"
app:destination="@id/fragmentB" app:enterAnim="@anim/nav_default_enter_anim"
app:exitAnim="@anim/nav_default_exit_anim" app:popEnterAnim="@anim/nav_default_pop_enter_anim"
app:popExitAnim="@anim/nav_default_pop_exit_anim"/>
</fragment>
导航有效,但我得到了标准
java.lang.IllegalArgumentException: navigation destination com.test.test:id/fragmentAtoB is unknown to this NavController
当我在旋转屏幕、拆分应用程序或有时看似随机的情况下单击按钮时出现错误。好像和配置变化有关?
编辑:我也尝试过使用
val clickListener: View.OnClickListener = Navigation.createNavigateOnClickListener(R.id.fragmentAtoB)
add_step_fab.setOnClickListener(clickListener)
与上述相同的问题。
检查我是否实际上在同一个片段中,正如一些为有相同异常(但出于不相关原因)的用户所建议的那样,例如:
if (controller.currentDestination?.id == R.id.navigation_main) {
controller.navigate(R.id.fragmentAtoB)
}
也没有帮助。