Функция уровня приложения Котлин в проекте Android - PullRequest
0 голосов
/ 01 февраля 2019

Кто-нибудь может объяснить, как я могу выпустить функцию котлина на уровне приложения в проекте Android Studio?У меня есть приложение для Android, и я пытаюсь сделать что-то вроде этого:

        var date: Date = Date()

///////////////////////////////////////////////////////// 
    // this block must be app-level fun
        val format = “dd.MM.yyyy”
        val simpleDateFormat = SimpleDateFormat(format)
        var formattedDate = simpleDateFormat.format(date)
/////////////////////////////////////////////////////////

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

Ответы [ 4 ]

0 голосов
/ 01 февраля 2019

Вы можете создать функцию расширения для Date, которая принимает формат и использует его для преобразования даты в этот формат.Вы также можете определить формат по умолчанию для входного параметра.Что-то вроде:

fun Date.toFormattedString(format: String = "dd.MM.yyyy"): String {      
  val simpleDateFormat = SimpleDateFormat(format)
  return simpleDateFormat.format(this)
}

Поместите его в файл, к которому все приложение может получить к нему доступ (например, файл с именем Extensions.kt в модуле / пакете, куда вы помещаете весь повторно используемый и / или вспомогательный код) итогда просто используйте функцию как someDate.toFormattedString().

0 голосов
/ 01 февраля 2019

Сделать функцию частью объекта.

https://www.baeldung.com/kotlin-objects

Объекты (не класс) в Kotlin являются статическими.Если вы импортируете объект из того места, где вы используете функцию, его можно использовать в любом месте без создания экземпляра.

0 голосов
/ 01 февраля 2019

У вас может быть DateUtil class, который содержит формат function как companion.Вы сможете использовать его в любом месте вашего приложения, не создавая его экземпляров.

class DateUtil{
    companion object {
        fun format(date: Date):String{
            val format = "dd.MM.yyyy"
            val simpleDateFormat = SimpleDateFormat(format)
            return  simpleDateFormat.format(date)
        }
    }
}

Затем вы называете это: DateUtil.format(Date())

0 голосов
/ 01 февраля 2019

Вот пример моей функции, содержащейся в отдельном файле kotlin под названием Time.kt

fun timeConverter(string: String?, i: Int): String {
    val isoFormat = "yyyy-MM-dd'T'HH:mm:ss"
    var expectedFormat = "dd/MM"
    when(i){
        0 -> expectedFormat = "dd/MM"
        1 -> expectedFormat = "EEE"
        2 -> expectedFormat = "HH:mm"
        3 -> expectedFormat = "EEE, dd/MM"
    }
    val dateFormat = SimpleDateFormat(isoFormat, Locale.getDefault())
    val date = dateFormat.parse(string)
    return SimpleDateFormat(expectedFormat).format(date)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...