像在
Best practice for instantiating a new Android Fragment
-对于可以从外部提供的参数,可以使用
Bundle
和
Fragment#setArguments(Bundle)
例如。
class DynamicContentFragment : Fragment() {
companion object {
private const val KEY_LAYOUT_ID = "layoutId"
fun instance(@LayoutRes layoutRes: Int) =
DynamicContentFragment().apply {
arguments = Bundle().apply { putInt(KEY_LAYOUT_ID, layoutRes) }
}
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
val layout = arguments!!.getInt(KEY_LAYOUT_ID)!!
return inflater.inflate(layout, container, false)
}
}
class UseCase {
fun test(fm: FragmentManager) {
fm.beginTransaction()
.replace(R.id.container, DynamicContentFragment.instance(R.layout.main))
}
}
否则,您的解决方案是可以的,但它需要每个参数一个新的类。用科特林写作的课程很便宜,所以我想这是首选。