функция вне файла не может быть вызвана - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть 2 файла класса, первый файл объявил функцию, а затем файл MainActivity вызвал эту функцию. И это показывает мне ошибку, что функции visible () и invisible () являются неразрешенными ссылками.

РЕДАКТИРОВАТЬ: показывает красный цвет в видимой () и невидимой () функции

У меня есть Utils.kt file

class Utils{

fun View.visible() {
    visibility = View.VISIBLE
}

fun View.invisible() {
    visibility = View.INVISIBLE
} }

и MainActivity.kt file

override fun showLoading() {
    progressBar.visible()
}

override fun hideLoading() {
    progressBar.invisible()
}

1 Ответ

0 голосов
/ 02 сентября 2018

С официального сайта Kotlin:

В большинстве случаев мы определяем расширения на верхнем уровне, т.е. напрямую под пакетами:

package foo.bar

fun Baz.goo() { ... }

Чтобы использовать такое расширение вне объявленного пакета, нам нужно импортировать его на сайте вызова:

package com.example.usage

import foo.bar.goo // importing all extensions by name "goo"
                   // or
import foo.bar.*   // importing everything from "foo.bar"

fun usage(baz: Baz) {
    baz.goo()
}

В вашем случае просто поместите все функции расширения в файл Utils.kt и удалите class Utils:

Utils.kt

import android.view.View

fun View.visible() {
    visibility = View.VISIBLE
}

fun View.invisible() {
    visibility = View.INVISIBLE
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...