Как получить доступ к кнопке внутри макета "включить"
Обратитесь к документу: http://android-developers.blogspot.com/2009/02/android-layout-tricks-2-reusing-layouts.html
У меня есть кнопка внутри включенного макета, как я могу получить доступ к кнопке? Я не знаю id! Как определить OnClickListener...?
Пожалуйста, помогите...
Ответы
Ответ 1
Идентификатор, который у вас есть с тегом include, присваивается корневому представлению включенного макета.
Сначала получите ссылку на этот вид с помощью findViewByid. Затем вы можете вызвать findViewById на этом конкретном представлении, чтобы получить ссылку на представление внутри макета. Итак:
View myLayout = findViewById( R.id.cell1 ); // root View id from that link
View myView = myLayout.findViewById( R.id.someinnerview ); // id of a view contained in the included file
Ответ 2
Все, что вам нужно, это идентификатор родительского представления:
![введите описание изображения здесь]()
В этом примере LinearLayout
является родительским элементом TextView
, который я хочу из включенного представления.
Теперь я могу сделать это:
View view = findViewById(R.id.include_title_layout);
TextView titleTV = (TextView) view.findViewById(R.id.newsTitleTextView);
titleTV.setText("Whatever");
Ответ 3
Существует общая ошибка в отношении разрешения идентификаторов виджетов при одновременном включении одного и того же XML-макета. Сообщение в блоге http://www.coboltforge.com/2012/05/tech-stuff-layout/ объясняет именно эту проблему и как ее решить!
Ответ 4
Вы знаете идентификатор include. Вы можете получить этот полный элемент, а затем оттуда забрать один из его детей.
Ответ 5
Фактически теги include
включают все элементы в корневой макет. Поэтому вы всегда можете получить к ним доступ, используя findViewById
в своей деятельности.
Предположим, что у вас есть alayout.xml
, в котором есть макет include
. Теперь в одном из ваших действий A внутри onCreate
вы объявили setContentView(R.layout.alayout)
Теперь внутри вашего макета включения вы можете иметь кнопку с id myBtn
. Вы можете получить доступ к этому внутри onCreate
так же, как вы могли бы получить к нему доступ, если бы он был в основном макете: findViewById(R.id.myBtn)