Kotlin: Переменные, типы данных и вывод на экран

В этом уроке разберём основы работы с данными: как хранить информацию, какие типы существуют и как показывать текст прямо в интерфейсе приложения.

Переменные: "val" vs "var"


В Kotlin две ключевые конструкции для объявления переменных:
  • val — неизменяемая переменная (аналог константы). После присвоения значения его нельзя поменять.
  • var — изменяемая переменная. Значение можно перезаписывать.

Пример в коде (MainActivity.kt):
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val greeting = "Привет!"          // val — нельзя изменить
    var counter = 0               // var — можно менять
    counter = counter + 1         // работает
    // greeting = "Пока!"          // ошибка: нельзя перезаписать val
}

Когда что использовать
  • val — для данных, которые не должны меняться (названия, настройки).
  • var — для счётчиков, динамических значений.

Основные типы данных


  • String: (Пример: "Текст") Строка символов.
  • Int: (Пример: 42) Целое число (от −2 147 483 648 до 2 147 483 647).
  • Long: (Пример: 10000000000L) Большое целое число.
  • Double: (Пример: 3.14) Число с плавающей точкой (высокая точность).
  • Float: (Пример: 3.14f) Число с плавающей точкой (меньшая точность).
  • Boolean: (Пример: true / false) Логическое значение.

Как указать тип явно (редко нужно — Kotlin выводит тип автоматически):
val username: String = "Alice"
val age: Int = 25

Вывод текста на экран приложения



Шаг 1. Подготовка контейнера и элемента
В методе onCreate() вашей активности: Создайте корневой контейнер — LinearLayout:
val rootLayout = LinearLayout(this)
rootLayout.orientation = LinearLayout.VERTICAL
rootLayout.gravity = Gravity.CENTER
rootLayout.setPadding(64, 64, 64, 64)

Создайте элемент TextView:
val textView = TextView(this)
textView.text = "Начальный текст"
textView.textSize = 20f
textView.gravity = Gravity.CENTER

Шаг 2. Размещение элементов
Добавьте TextView в контейнер и установите контейнер как основной вид:
rootLayout.addView(textView)
setContentView(rootLayout)

Шаг 3. Динамическое изменение текста
// Вариант 1: простое присвоение
textView.text = "Обновлённый текст!"

// Вариант 2: с использованием переменных
val username = "Анна"
textView.text = "Привет, $username!"

// Вариант 3: с вычисляемыми значениями
val count = 5
textView.text = "Счётчик: ${count * 2}"

Полный пример метода onCreate()
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    // Создаём контейнер
    val rootLayout = LinearLayout(this)
    rootLayout.orientation = LinearLayout.VERTICAL
    rootLayout.gravity = Gravity.CENTER
    rootLayout.setPadding(64, 64, 64, 64)

    // Создаём текстовое поле
    val textView = TextView(this)
    textView.textSize = 20f
    textView.gravity = Gravity.CENTER

    // Устанавливаем начальный текст
    textView.text = "Добро пожаловать!"

    // Размещаем элементы
    rootLayout.addView(textView)
    setContentView(rootLayout)

    // Пример динамического обновления (можно вызвать позже)
    textView.postDelayed({
        textView.text = "Текст обновлён через 2 секунды!"
    }, 2000)
}

Ключевые моменты
  • Контекст this — передаётся в конструкторы (LinearLayout(this), TextView(this)) для привязки к текущей активности.
  • Параметры оформления (размер шрифта, выравнивание) задаются напрямую через свойства объекта.
  • Динамическое обновление возможно в любой момент после создания элемента.

Дополнительные возможности
Несколько текстовых полей:
val title = TextView(this)
title.text = "Заголовок"
title.textSize = 24f
title.typeface = Typeface.DEFAULT_BOLD

val subtitle = TextView(this)
subtitle.text = "Подзаголовок"
subtitle.textSize = 16f

rootLayout.addView(title)
rootLayout.addView(subtitle)

Стилизация через методы:
textView.setBackgroundColor(Color.LTGRAY)
textView.setTextColor(Color.BLUE)
textView.setPadding(32, 16, 32, 16)

Обработка событий (например, при клике):
textView.setOnClickListener {
    textView.text = "Нажато! Время: ${System.currentTimeMillis()}"
}

Конкатенация строк


Чтобы объединить текст и переменные, используйте:
Оператор +:
val name = "Алиса"
textView.text = "Привет, " + name + "!"

Строковые шаблоны (рекомендуется):
textView.text = "Привет, $name!"
// Для выражений: ${counter + 1}

Практическое задание


  • Создайте переменную val appName: String со значением "Мой первый Kotlin-апп".
  • Создайте переменную var visits: Int со значением 0.
  • Увеличьте visits на 1.
  • Выведите в TextView строку:
    "Приложение: $appName. Посещений: $visits"

Ожидаемый результат на экране:
Приложение: Мой первый Kotlin-апп. Посещений: 1

Отладка: где смотреть ошибки


Если приложение не запускается:
  1. Проверьте Logcat (внизу экрана) — ищите строки с E/ (ошибки).
  2. Убедитесь, что:
    • ID в findViewById совпадает с android:id в XML;
    • все переменные объявлены до использования.

  3. Перезапустите сборку: "Build → Rebuild Project".

Типичные ошибки и их решение


  • «Unresolved reference: textView»
    Проверьте, что R.id.textView существует в "activity_main.xml".
  • «NullPointerException»
    Убедитесь, что setContentView(R.layout.activity_main) вызван до findViewById.
  • «Type mismatch»
    Сверьте типы переменных (например, не пытайтесь записать String в Int).

Что дальше?


В следующем уроке разберём (Условные операторы и циклы):
  • Условные операторы (if-else, when);
  • Циклы (for, while);
  • Создание кнопок и обработку нажатий.


Автор:  28.01.2026 06:38:19 am