在Android开发中,NavComp
(Navigation Component)是用于简化导航逻辑的一个组件。要通过NavComp
片段参数传递任意类型的泛型列表,可以使用Safe Args
插件来安全地传递数据。
Safe Args
可以确保传递的参数类型正确,减少运行时错误。List<T>
,其中T
可以是任意类型。build.gradle
文件中添加Navigation Component和Safe Args插件的依赖:build.gradle
文件中添加Navigation Component和Safe Args插件的依赖:nav_graph.xml
文件中定义参数:nav_graph.xml
文件中定义参数:nav_graph.xml
中定义的参数类型与传递的参数类型一致。app:argType
指定正确的类型。build.gradle
文件中正确添加了annotationProcessor
依赖。以下是一个完整的示例代码,展示了如何在Kotlin中使用NavComp
传递泛型列表:
build.gradle:
dependencies {
def nav_version = "2.5.3"
implementation "androidx.navigation:navigation-fragment:$nav_version"
implementation "androidx.navigation:navigation-ui:$nav_version"
annotationProcessor "androidx.navigation:navigation-safe-args-compiler:$nav_version"
}
nav_graph.xml:
<fragment
android:id="@+id/sourceFragment"
android:name="com.example.SourceFragment"
android:label="Source">
<action
android:id="@+id/action_sourceFragment_to_destinationFragment"
app:destination="@id/destinationFragment" />
</fragment>
<fragment
android:id="@+id/destinationFragment"
android:name="com.example.DestinationFragment"
android:label="Destination">
<argument
android:name="genericList"
app:argType="list" />
</fragment>
SourceFragment.kt:
class SourceFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val genericList = listOf("Item1", "Item2", "Item3")
val action = SourceFragmentDirections.actionSourceFragmentToDestinationFragment(genericList)
findNavController().navigate(action)
}
}
DestinationFragment.kt:
class DestinationFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val args: DestinationFragmentArgs by navArgs()
val genericList = args.genericList
// 使用genericList
}
}
通过以上步骤,你可以安全地通过NavComp
片段参数传递任意类型的泛型列表。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云