Разработка для Android: Колтин -> Как использовать имя идентификатора, созданное в xml, и вызывать его в действии без создания нового изменяемого

#android #kotlin

Вопрос:

Я слежу за этим обучающим видео

В activity.xml Я создал панель инструментов с именем идентификатора

   <androidx.appcompat.widget.Toolbar
    android:id="@ id/toolbar_excerise_activity"
    android:background="@color/white"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/actionBarSize">
 

Затем в MainActivity.kt в методе on create они просто называют имя id без определения переменной. Как это делается?

 class ExceriseActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_excerise)


    setSupportActionBar(**toolbar_exercise_activity**)
}
 

}

Поэтому некоторые из них просто назвали имя идентификатора toolbar_excerise_activity, не указывая переменную. Как это делается

Комментарии:

1. Это возможность, предоставляемая компанией kotlin-android-extensions . Это плагин для компилятора, но сейчас он устарел. Вы можете выполнить поиск в Интернете, чтобы узнать об этом.

Ответ №1:

Я бы предложил использовать привязку представления для этого. https://developer.android.com/topic/libraries/view-binding#activities

 private lateinit var binding: ActivityExceriseBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityExceriseBinding.inflate(layoutInflater)
    val view = binding.root
    setContentView(view)
    setSupportActionBar(binding.toolBar)
}
 

привязка представления создаст класс привязки для всех ваших xml-макетов.
Имя класса привязки зависит от имени файла, например:
my_layout.xml приведет к созданию MyLayoutBinding класса.
Также в xml все, что имеет идентификатор, будет существовать в классе привязки.
Привязка будет содержать верблюжьи версии имен идентификаторов в xml.
значение @ id/my_id создаст myId переменную в классе привязки