Обращение из активности к элементам CardView в RecycleView, который реализован во фрагменте, после "пересоздания" (поворота экрана) активности

В активности создаю объект View в котором сохраняю ссылку на RecyclerView, который реализован во фрагменте:

View parentView = findViewById(R.id.common_recycler);

Посредством созданного объекта я обращаюсь к элементам CardView реализованного для RecyclerView. Метод где реализован этот код вызывается в двух случаях. Первый - при обработке нажатии (касании экрана) пользователем объекта фрагмента - все отлично работает. Второй - когда я хочу обработать "пересоздания" активности. В этом случае я получаю ссылку на RecyclerView - но в нем не создан CardView и соответственно объекты которые он содержит.

Вызов метода я пробовал и в onRestoreInstanceState и onResum и onResume и onPostResum и onPostResume и onResumeFragment. Ссылку на RecyclerView получаю (но в логкате видно что он "пустой") а CardView и его элементы (соответственно) не созданы и при попытке получить ссылку по ид - результат null. Я так понимаю, что реализация этого метода во фрагменте смысла не имеет, так как переопределенный метод onResumeFragment и есть onResum в фрагменте. Получилось реализовать задуманное (сохранение состояния CardView) при вызове в методе onWindowFocusChanged, но это не очень красиво и не эффективно. Благодарю за любые соображения.


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

Автор решения: Ігор Шарін

Спасибо, ЮрийСПб, за задание правильного направления. Не знаю чисто ли с точки зрения оптимальности кода реализовано решение, но оно работает. ЮрийСПб, сказал что неправильно обращаться из активити к view CardHolderView и RecyclerView расположенных во фрагменте. Поэтому всю логику по обработке элементов CardView я реализовал в адаптере. А сохранение состояния CardView после поворота экрана (которое подразумевает сохранение двух параметров типа int), посредством статических переменных. Единственное пришлось в самом фрагменте в onPause реализовать "отсоединение" адаптера, чтобы в самом адаптере сохранить нужные параметры в событии onDetachedFromRecyclerView. С радостью приму замечания и комментарии к "методу" решения моего вопроса.

→ Ссылка