Android Fragments 如何将片段作为参数传递

pb3skfrl  于 2023-02-04  发布在  Android
关注(0)|答案(1)|浏览(112)

我想做的事情的摘要:我想创建一个带有标签的应用程序,但我会让用户有一个设置,他们可以选择他们想要使用哪几个标签,以及它们的顺序。
所以我想我应该创建一个包含所有可能的FragmentArrayList,并根据用户的设置创建一个新的ArrayList。现在,我创建了一个data class来存储与Fragment相关的一些细节,我还将其设置为ArrayList的类型。并意识到我不能只传递Fragment作为参数。传递常规Fragment会使Android Studio抱怨我想使用[FragmentName].Companion。接受该建议会使参数完全等于[FragmentName].Companion,所以我不能将它用于其他Fragment
那么,我该怎么做呢?或者如果你对我如何构建应用程序有更好的想法,请告诉我。

jc3wubiy

jc3wubiy1#

我建议只传递有关如何创建片段的信息,例如,您可以创建一些FragmentDefinition类,该类将包含正确创建片段所需的更多数据。例如类名,并与参数绑定。因此,您可以轻松地示例化片段,而无需了解其他细节。

data class FragmentDefinition(val className: String, val parameters: Bundle): Parcelable

fun sample(){
    val fragmentDefinitions = listOf(
        FragmentDefinition("com.sample.FragmentA", Bundle()),
        FragmentDefinition("com.sample.FragmentB", Bundle()),
        FragmentDefinition("com.sample.FragmentC", Bundle())
    )
    
    fragmentDefinitions.forEach { definition ->
        val fragment = supportFragmentManager.fragmentFactory.instantiate(this::class.java.classLoader!!,definition.className)
        fragment.arguments = definition.parameters
        
        // add your fragment to hierarchy
   }
}

相关问题