我有一个通用方法可以从活动中的图库中获取图像,该方法由不同的片段访问,在活动方法中了解哪个片段调用此方法的最佳方法是什么,以便我可以设置适当的条件。
我已经尝试在片段中传递一个字符串,但还有其他干净的方法
答案 0 :(得分:0)
你可以像这样传递 Fragment 类:
(requireActivity() as YourActivity).method(this::class)
并在您的活动中获取有关该课程的所有可用信息:
fun method(comesFromClass: KClass<out Fragment>) {
val simpleName = comesFromClass.simpleName
...
}
答案 1 :(得分:0)
Blockquote 我有一个通用方法可以从活动中的图库中获取图像,该方法由不同的片段访问,在活动方法中了解哪个片段调用此方法的最佳方法是什么,以便我可以设置适当的条件。
您能否提供更多有关您要实现的目标的详细信息? 如果我猜对了,你的 Activity 中有一个方法可以被不同的片段访问。这样对吗?如果是,那么它很可能是不正确的。让我详细说明一下:通过让片段调用宿主活动中的方法,您将它们耦合到活动。如果需要将相同的 Fragment 附加到不同的活动怎么办?无论如何,情况并非总是如此。例如,如果您已经知道这些片段将始终用于此特定活动,那么就可以了。 一般情况下,Activity和Fragment之间的通信是通过接口实现的,让组件保持解耦。我强烈建议您阅读关于 here 主题的官方文档。
无论如何,如果你想拥有这样的功能,并且你正在使用 Kotlin,你可以利用 reified parameters。例如,在您的活动中,您可以:
inline fun <reified T> invokerName() = T::class.simpleName // Do something with the class
你可以这样调用:
activity.invokerName<Foo>()