При использовании kotlinx синтетического вида при изменении ориентации представление является нулевым - PullRequest
0 голосов
/ 07 января 2019

Myview является нулевым в наблюдателе модели представления, если и только если после изменения ориентации

Я использовал kotlinx синтетический, все представления инициированы, но те, которые выдают исключение нулевого объекта, которые доступны в наблюдателе модели представления

это мой импорт

 import kotlinx.android.synthetic.main.nav_header_story.user_avatar

Все хорошо, но когда ориентация меняется, генерируется исключение нулевого указателя, но другие виды запуска ожидаются в области видимости наблюдателя модели

   personInfoViewModel.shortUserInfo.observe(this , Observer {shortInfo ->

       userAvatar.setOnClickListener {

        })

Я не мог найти, где что-то пошло не так, тогда я попытался

    userAvatar = nav_view.getHeaderView(0).findViewById(R.id.user_avatar)

и доступ к нему работает каждый раз, даже после изменения ориентации

    personInfoViewModel.shortUserInfo.observe(this , Observer {shortInfo ->

       userAvatar.setOnClickListener {

        })

Странно, что не так с

kotlinx.android.synthetic.main.nav_header_story.user_avatar

после изменения ориентации

1 Ответ

0 голосов
/ 28 февраля 2019

Кэш представлений не очищается после вызова onDestroyView() при импорте только определенных представлений. Вам нужно импортировать весь пакет, чтобы он работал.

import kotlinx.android.synthetic.*
...