Страницы

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

вторник, 24 декабря 2019 г.

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

#android #include #merge


Здравствуйте,

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

Есть следующий файл разметки reference_linear_layout_up_down_numeric_buttons: 


>

 
 




В основном меню идет отсылка на разметку reference_linear_layout_up_down_numeric_buttons:

  


Как теперь можно в 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 программе?

Заранее большое спасибо всем за ответы.
    


Ответы

Ответ 1



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

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

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