как получить доступ к функциям Android библиотеки kotlin - PullRequest
1 голос
/ 27 мая 2020

Я написал простую функцию в своей Android библиотеке, которую хочу использовать в моем Android проекте. Я не могу получить доступ к этой библиотечной функции из проекта android.

Импорт в порядке, я могу перейти к классу Util из проекта. Просто я не могу получить доступ к функции kotlin

Примечание: библиотека Android находится внутри Android проекта

Я получаю Unresolved reference: specialToast

Android библиотечная функция

class Util {

    fun specialToast(context: Context, string: String) {
        Toast.makeText(context, string, Toast.LENGTH_LONG).show()
    }
}

Android проект

import com.i6systems.offlineservicelibrary.Util

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        Util.specialToast(applicationContext, "test")
        //****Unresolved reference: specialToast*****
    }
}

Спасибо за ваше предложение

R

1 Ответ

1 голос
/ 27 мая 2020

Я создал сопутствующий объект и поместил в него функцию, и это сработало. но каков правильный путь?

Идиоматия c Kotlin:

Рекомендуется никогда не использовать объект для создания пространств имен и всегда использовать верхний уровень. декларации, когда это возможно. Мы не обнаружили, что конфликты имен являются проблемой, и если вы действительно столкнетесь с конфликтом, вы можете разрешить его, используя импорт с псевдонимом.

Итак,

// outside any class or object
fun specialToast(context: Context, string: String) {
    Toast.makeText(context, string, Toast.LENGTH_LONG).show()
}

в одном файле и

import com.i6systems.offlineservicelibrary.specialToast

...
specialToast(applicationContext, "test")

в другом.

...