Страницы

Поиск по вопросам

вторник, 27 ноября 2018 г.

Ссылка на дочерние элементы в layout с merge

Здравствуйте,
сделал свой аналог numericUpDown, т.е. поле с двумя кнопками, которые увеличивают или уменьшают значение. Одна и та же разметка довольно часто используется, поэтому хотел бы на нее ссылаться с помощью include и merge.
Есть следующий файл разметки reference_linear_layout_up_down_numeric_buttons:
>


В основном меню идет отсылка на разметку reference_linear_layout_up_down_numeric_buttons
android:id="@+id/layoutUpDownNumberOfStars" />
Как теперь можно в java программе сослаться на кнопки ?
Например если я напишу вот так:
View mView_LayoutView = findViewById(R.id.layoutUpDownNumerOfStars);
Button mButtonUp = mView_LayoutView.findViewById(R.id.buttonArrowUp);
То компилятор выдает ошибку NullPointerException
Если написать вот так:
Button mButtonUp = findViewById(R.id.buttonArrowUp);
То будет неоднозначная ситуация например если несколько ссылок в основной разметке на разметку reference_linear_layout_up_down_numeric_buttons с кнопками.
Как в этом случае нужно правильно сослаться на кнопки в java программе?
Заранее большое спасибо всем за ответы.


Ответ

Получить ссылку на merge нельзя. Используется он (как я понял из доков) для возможности заменить 2 include 1 merge.
Засим, отличить кнопки из merge друг от друга можно лишь по их родителю. Т.е. нельзя поместить два идетичных merge в один контейнер. Ведь в этом случае у вас будет один и тот же ID у нескольких элементов.
Но вы можете поместить по одному merge в разные контейнеры в одной общей разметке и находить их через эти контейнеры.
containerView.findViewById(...).;

Комментариев нет:

Отправить комментарий