Евгений Колесников пре 2 година
родитељ
комит
86c1e2348a
1 измењених фајлова са 20 додато и 0 уклоњено
  1. 20 0
      articles/themes.md

+ 20 - 0
articles/themes.md

@@ -482,6 +482,26 @@ if (btn_one != null) {
 
     Правила форматирования строк можно посмотреть [тут](https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html#summary)
 
+1. Отложенная инициализация указателей на визуальные объекты
+
+    Если необходимо объявить глобальный (на уровне класса) указатель на визуальный объект (TextView, Button и т.п.), то задать ему значение мы в момент объявления не можем, т.к. оно становится доступным только после вызова метода *setContentView*. В таком случае мы добавляем в объявление ключевое слово **lateinit** (инициализация позже) и присваиваем значение в конструкторе окна:
+
+    ```kt
+    // объявляем свойство класса с ОТЛОЖЕННОЙ инициализацией
+    private lateinit var someTextView: TextView
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        // вызов конструктора базового класса
+        super.onCreate(savedInstanceState)
+
+        // привязка контента (файла разметки)
+        setContentView(R.layout.activity_main)
+
+        // свой код можно вставлять отсюда
+        someTextView = findViewById(R.id.some_text_view)
+    }
+```
+
 Предыдущая лекция |  | Следующая лекция
 :----------------:|:----------:|:----------------:
 [Первый проект в Android Studio](./android_studio.md) | [Содержание](../readme.md#практика-разработка-мобильных-приложений) | [Смена ориентации, жизненный цикл activity, сохранение данных](./layout_orientation.md)