что то типа такого:
spinner?.onItemSelectedListener = object : OnItemSelectedListener {
override fun onItemSelected(
parent: AdapterView<*>, view: View?, pos: Int, id: Long
) {
(parent.getChildAt(0) as TextView).setTextColor(
resources.getColor(
R.color.colorAccent,
activity?.theme
)
ну и так дальше...
не могу понять что не так: если фрагмент создаётся впервые то всё работает. если возвращаюсь на него откуда-нибудь то валит NPE
null cannot be cast to non-null type android.widget.TextView
at ... Fragment$initViews$4.onItemSelected
короче view не существует
как починить? что не так когда возврат происходит?
воткнул логи:
всякий раз раз когда в nav компоненте action c вызовом фрагмента всё работает
при возврате на фрагмент через v.findNavController().navigateUp() :
onViewCreated выполняется
parent существует
parent.getChildAt(0) даёт null
адаптер примитивный ничего лишнего. просто список
что за магия?)
На какую конкретно строку ругается? На строку присвоения листенера?
нет. ни на что не ругается. parent.getChildAt(0) даёт null
Все листенеры фрагмента нужно занулять в onDestroyView. Проверьте, поможет ли вам это.
ща. спасиб
не. не помогает
getChildAt что вообще в нормальном состоянии должен возвращать? View? Просто я не пользовался, без понятия.
Перед этой строкой добавьте эту и скиньте что вывело в лог println(parent)
покажите код возвращения
Так тут же не используется view.. Значит getChildAt возвращает null
нет кода возвращения. есть nav компонент. в нём два варианта: v.findNavController().navigate(R.id.action_nav_fragment) - собственно вызов фрагмента но если там гденить жмакнуть назад то есть по факту findNavController()?.navigateUp() то приплыли. вьюхи нет
покажите скрином код onCreateView()
Стикер
пардон, onViewCreated()
Стикер
Обсуждают сегодня