Переменные: "val" vs "var"
В Kotlin две ключевые конструкции для объявления переменных:
val— неизменяемая переменная (аналог константы). После присвоения значения его нельзя поменять.var— изменяемая переменная. Значение можно перезаписывать.
Пример в коде (
MainActivity.kt):
ВыделитьKotlin
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 выводит тип автоматически):
ВыделитьKotlin
val username: String = "Alice"
val age: Int = 25Вывод текста на экран приложения
Шаг 1. Подготовка контейнера и элемента
В методе
onCreate() вашей активности: Создайте корневой контейнер — LinearLayout:
Выделитьkotlin
val rootLayout = LinearLayout(this)
rootLayout.orientation = LinearLayout.VERTICAL
rootLayout.gravity = Gravity.CENTER
rootLayout.setPadding(64, 64, 64, 64)Создайте элемент
TextView:
ВыделитьKotlin
val textView = TextView(this)
textView.text = "Начальный текст"
textView.textSize = 20f
textView.gravity = Gravity.CENTERШаг 2. Размещение элементов
Добавьте
TextView в контейнер и установите контейнер как основной вид:
ВыделитьKotlin
rootLayout.addView(textView)
setContentView(rootLayout)Шаг 3. Динамическое изменение текста
ВыделитьKotlin
// Вариант 1: простое присвоение
textView.text = "Обновлённый текст!"
// Вариант 2: с использованием переменных
val username = "Анна"
textView.text = "Привет, $username!"
// Вариант 3: с вычисляемыми значениями
val count = 5
textView.text = "Счётчик: ${count * 2}"Полный пример метода onCreate()
ВыделитьKotlin
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)) для привязки к текущей активности. - Параметры оформления (размер шрифта, выравнивание) задаются напрямую через свойства объекта.
- Динамическое обновление возможно в любой момент после создания элемента.
Дополнительные возможности
Несколько текстовых полей:
ВыделитьKotlin
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)Стилизация через методы:
Выделитьkotlin
textView.setBackgroundColor(Color.LTGRAY)
textView.setTextColor(Color.BLUE)
textView.setPadding(32, 16, 32, 16)Обработка событий (например, при клике):
ВыделитьKotlin
textView.setOnClickListener {
textView.text = "Нажато! Время: ${System.currentTimeMillis()}"
}Конкатенация строк
Чтобы объединить текст и переменные, используйте:
Оператор
+:
ВыделитьKotlin
val name = "Алиса"
textView.text = "Привет, " + name + "!"Строковые шаблоны (рекомендуется):
ВыделитьKotlin
textView.text = "Привет, $name!"
// Для выражений: ${counter + 1}Практическое задание
- Создайте переменную
val appName: Stringсо значением"Мой первый Kotlin-апп". - Создайте переменную
var visits: Intсо значением0. - Увеличьте
visitsна1. - Выведите в
TextViewстроку:ВыделитьKotlin"Приложение: $appName. Посещений: $visits"
Ожидаемый результат на экране:
Приложение: Мой первый Kotlin-апп. Посещений: 1
Отладка: где смотреть ошибки
Если приложение не запускается:
- Проверьте Logcat (внизу экрана) — ищите строки с
E/(ошибки). - Убедитесь, что:
- ID в
findViewByIdсовпадает сandroid:idв XML; - все переменные объявлены до использования.
- ID в
- Перезапустите сборку: "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); - Создание кнопок и обработку нажатий.