来自Kotlin类的调用方法

Ste*_*pan 6 android toolbar fragment kotlin

我有一个util Kotlin类,我在其中设置工具栏标题,隐藏或显示工具栏取决于片段:

class MyToolbarUtils() {

    fun hideToolbar(activity: Activity) {
        (activity as MainActivity).supportActionBar!!.hide()
    }

    fun showToolbar(activity: Activity, tag: String) {
        setToolbarTitle(tag, activity)
        (activity as MainActivity).supportActionBar!!.show()
    }

    fun setToolbarTitle(tag: String, activity: Activity) {
        var title = ""
        when (tag) {
            "Main_fragment" -> title = activity.resources.getString(R.string.Main_screen)
            "Add_note" -> title = activity.resources.getString(R.string.Add_note)
        }
        activity.title = title
    }
}
Run Code Online (Sandbox Code Playgroud)

如何从Fragment调用showToolbar(...)?我只是尝试过,MyToolbarUtils.showToolbar(..)但这是不可能的

我发现的唯一方法是:

val setToolbarTitle = MyToolbarUtils()
setToolbarTitle.showToolbar(activity, tag)
Run Code Online (Sandbox Code Playgroud)

但必须有更好的方法来做到这一点..

小智 11

将您的转换为一个应该与java静态方法类似的对象.

您可以在此处获取更多信息:https://kotlinlang.org/docs/reference/object-declarations.html#object-declarations


Ale*_*lov 6

听起来MyToolbarUtils应该是一个对象声明而不是一个类。

另一种方法是在文件的顶层(而不是在任何类中)声明此类中的函数,并仅通过它们的简单名称来引用它们。