Подтвердить что ты не робот

Как получить доступ к кнопке внутри макета "включить"

Обратитесь к документу: http://android-developers.blogspot.com/2009/02/android-layout-tricks-2-reusing-layouts.html

У меня есть кнопка внутри включенного макета, как я могу получить доступ к кнопке? Я не знаю id! Как определить OnClickListener...?

Пожалуйста, помогите...

4b9b3361

Ответ 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)