169 похожих чатов

Друзья, заметил странное поведение у своего приложения. Было ли у

кого нибудь похожее?

в методе onCreateView создаю ViewModel, которая в при инициализации считывает данные и грузит их в лайвдату. Листенер устанавливаю, очевидно, после создания вьюмодели. Эта лайвдата передает фрагменту информацию про состояние (активное/неактивное) иконки в меню. Эта иконка объявлена как lateinit var и бывают моменты, когда прилетает лайвдата, а менюайтем почему то не инициализирован. Снизу сокращенный код того что у меня

class MyFragment : Fragment() {
private lateinit var viewModel: MyViewModel
private lateinit var menuItemCheck: MenuItem

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {

setHasOptionsMenu(true)

viewModel = ViewModelProvider(this).get(MyViewModel::class.java)

setOnIsCheckActiveChangeListener()
}

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
inflater.inflate(R.menu.menu_new_note, menu)
menuItemCheck = menu.findItem(R.id.menuItem_check)
}

private fun setOnIsCheckActiveChangeListener() {
viewModel.isCheckActiveLiveData.observe(viewLifecycleOwner) {
menuItemCheck.isEnabled = it // Тут кидает иногда UninitializedPropertyAccessException
}
}
}

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

5 ответов

7 просмотров

а можна закидывать код на hatebin?

Savva-Mirzoyan Автор вопроса

можешь кидать, никто не запрещал

это был риторический вопрос к вам)

Savva-Mirzoyan Автор вопроса

Я понял :) Но опыт показывает, что редко кто переходит на вопросы с ссылкой еще куда то. Личные наблюдения

Все, что связано с View, делается в onViewCreated()

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Привет. Я верно понимаю, что в определении класса Монад m — зафиксирован (к тому же поскольку это моноид в категории эндофункторов). Т.е. используя байнд я не могу перемещать...
Arseny
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта