Вы получаете доступ к включенной привязке макета, а не к панели инструментов, которая находится внутри включенного макета. Я вижу, что вы не дали MaterialToolbar
никакого удостоверения личности. Поэтому вам нужно присвоить объект панели инструментов в XML идентификатор и включить его в макет, а затем дать идентификатор, а затем в вашем файле Kotlin получить к нему доступ, как val toolbar = binding.includedLayout.toolbar
. Кроме того, вы получаете доступ к представлению до setContentView(binding.root)
, что неправильно. Вы должны установить макет, прежде чем пытаться получить доступ к представлениям.
Панель инструментов. xml
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.appbar.MaterialToolbar
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar"
style="?toolbarStyle"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:elevation="0dp" />
MainActivity. xml
<include
android:id="@+id/includedLayout"
layout="@layout/toolbar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
setTheme(R.style.AvailsTheme_DayNight)
super.onCreate(savedInstanceState)
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val toolbar = binding.includedLayout.toolbar
}
}