Не работают листенеры после обновления Android Studio

Всем привет! Возобновил работу над старым проектом, работавшим в версии Android Studio 21-го года (Bumblebee). После обновления до текущей версии (Giraffe) обнаружилось, что некоторые листенеры не срабатывают. Особенность несрабатывающих листенеров в том, что разметка, на к-рой находятся кликаемые View, подключается в главную разметку через include. Текст проекта великоват, приведу самые значимые моменты:

Главная разметка, файл power_unit_fragment.xml:

<androidx.constraintlayout.widget.ConstraintLayout 
....
    <FrameLayout
        android:id="@+id/powerunit_ControlFrame"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="0dp"
        android:layout_marginTop="20dp"
        app:layout_constraintStart_toStartOf="@id/powerunit_infoFrame"
        app:layout_constraintTop_toBottomOf="@id/powerunit_infoFrame">

        <include layout="@layout/powerunit_control" />
    </FrameLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

Разметка с кликаемыми элементами, файл powerunit_control.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
...
            <Button
                android:id="@+id/emStop"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginStart="4dp"
                android:focusable="true"
                android:textStyle="bold"
                android:clickable="true"
                android:textColor="@color/button_text_color"
                app:backgroundTint="@color/green_red_button_color"
                android:text="E.Stop on"
                />
</LinearLayout>

В onCreateView фрагмента, где используется биндинг и листенеры:

       powerUnitFragmentBinding = PowerUnitFragmentBinding.inflate(inflater, container, false) //биндинг "главного" окна
       powerunitControlBinding = PowerunitControlBinding.inflate(inflater, container, false)  // биндинг подключенного includ-ом окошка с кнопкой

//листенер кнопки
        powerunitControlBinding.emStop.setOnClickListener {
....
        }
//onCreateView завершается возвратом 
        return powerUnitFragmentBinding.root  //что вроде бы правильно

Так вот, листенер устанавливается, но не срабатывает никогда. Что можно предположить?


Ответы (1 шт):

Автор решения: Argon-11

В общем, верно подозревал, что причина была в подключении разметки. Все заработало после нижеописанных изменений. При подключении разметки через include добавил идентификатор подключаемого файла:

<include
    android:id="@+id/powerunit_ControlFrame"
    layout="@layout/powerunit_control" />

Биндинг:

binding = PowerUnitFragmentBinding.inflate(inflater, container, false) //биндинг "корневой" разметки
powerunitControlBinding = binding.powerunitControlFrame //используется добавленный id

Листенер остался без изменений. В общем, есть какой-то нюанс во взаимоотношениях view binding и составной разметки.

→ Ссылка