在活动方法中知道哪个片段正在调用该方法的最佳方法是什么

时间:2021-02-04 05:45:49

标签: android kotlin

我有一个通用方法可以从活动中的图库中获取图像,该方法由不同的片段访问,在活动方法中了解哪个片段调用此方法的最佳方法是什么,以便我可以设置适当的条件。

我已经尝试在片段中传递一个字符串,但还有其他干净的方法

2 个答案:

答案 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>()