我正在学习使用Android片段导航。
现在,我可以按照示例使用ID导航到导航图中定义的特定目标片段。如下所示:
<fragment android:id="@+id/a"
android:name="com.example.myapplication.FragmentA"
android:label="a"
tools:layout="@layout/a">
<action android:id="@+id/action_a_to_b"
app:destination="@id/b"
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>
viewTransactionsButton.setOnClickListener { view ->
view.findNavController().navigate(R.id.viewTransactionsAction)
}
但是,我有一个特殊的用例,我想以编程方式导航到目标片段,该片段在navi图中未定义。我该如何实现呢?
itemView.setOnclickListener { view ->
val targetFragmentClass = getTargetFragmentClass(view)
//How can I findNavController().navigate() to created targetFragmentClass instance?
}
我检查了导航控制器的文档,其导航()方法的所有版本都需要一些资源ID,这意味着我必须在XML中定义操作或目标。但是我想要像遗留片段管理器API这样的东西,我可以实例化任何片段类并创建一个事务来应用它。
所以,我的问题是:
非常感谢。