- В методе фрагмента
onCreateView()
я пытаюсь инициализировать CustomView с поведением, аналогичным потрясающей кнопке. - После нажатия на это пользовательское представление предполагается запуск анимации, которая использует пустой
RelativeLayout
, который присутствует в родительском элементе ViewGroup
во фрагменте. - Я передаю этот
ViewGroup
в CustomView в конструкторе . - Когда я пытаюсь создать ссылку на пустое значение
RelativeLayout
, вызывая ViewGroup.findViewById(R.id.target)
, ссылка на создание сохраняет нулевое значение, в конечном итоге вызывая NullPointerException
при анимации - Однако, если я использую
ViewGroup.getChildAt(1)
для создания ссылки анимация работает просто отлично. - Используя наблюдателей, я обнаружил, что идентификатор
ViewGroup.getChildAt(1)
отличается от идентификатора R.id.target, который был назначен ему через xml. - Что это за колдовство?
- Я просматривал уже несколько дней, чтобы найти вопрос, который описывает эту ситуацию.
Дополнительная информация:
- Мы недавно переключились ched из библиотек поддержки на androidX.
- фрагмент. xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/top_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout>
<!-- Other views -->
</LinearLayout>
<!-- This is the layout i am trying to instantiate -->
<RelativeLayout
android:id="@+id/target"/>
</RelativeLayout>