如何正确实现android片段中的接口?

时间:2018-01-10 00:43:09

标签: android android-studio android-fragments kotlin kotlin-android-extensions

人。我一直在和kotlin一起开展一个项目,我需要制作一个与父活动交流的片段......我完全按照谷歌和其他网站的建议,但我仍然收到错误"活动不会覆盖任何内容&# 34; ...所有其他解决方案对我不起作用......这是代码。

FRAGMENT

path

而不是主要活动

.on('end, function(){})

我在活动类上得到了错误...当我删除"覆盖?时,错误消失但是当我点击按钮时没有任何反应......我做错了什么?

2 个答案:

答案 0 :(得分:1)

正如@chris所评论的那样,您需要将onCreate()方法之外的行移到其后:

 override fun onTimeSettedListener(comic: String) {
    println("params")
}

您还需要匹配名称替换

interface OnTimeSettedListener {
    fun onTimeSetListtedener(comic : String){
        println("ok")
    }
}

通过

interface OnTimeSettedListener {
    fun onTimeSettedListener(comic: String) {
        println("ok")
    }
}

<强>更新

如果你修改名称拼写错误并删除片段内界面中onTimeSettedListener声明的默认实现,那么当你的活动实现它并且Android Studio警告你有关丢失的覆盖时,它是可能的单击它并选择IDE为您实现它以避免错误:

interface OnTimeSettedListener{
    fun onTimeSettedListener(comic : String)
}

您还需要修复呼叫替换:

listener.onTimeSetListtedener("test")

通过

listener.onTimeSettedListener("test")

答案 1 :(得分:1)

我认为你不应该在你的界面方法中添加方法体。它不允许在Java中使用。在Kotlin中没有显示方法体受限制的错误。但你应该删除身体。改变您的界面,如

interface OnTimeSettedListener{
    fun onTimeSetListtedener(comic : String)
}

实际上,你并没有覆盖你的倾听者的方法。 OnTimeSettedListener中的方法名称为onTimeSetListtedener,但您要覆盖代码中不存在的onTimeSettedListener

同样@albodelu在评论中提到了答案和@chris,你不能在方法中编写方法。这是不正确的用法。