В своем классе я создал переменную ...
private ImageView imgLayoutImgEditPet;
В методе onCreate
я ссылаюсь на переменную ...
imgLayoutImgEditPet = new ImageView(this);
Затем я добавляю этот ImageView
в макет ...
layoutImgEditPet.addView(imgLayoutImgEditPet);
Это должно работать, но я получаю эту ошибку ...
java.lang.NullPointerException: попытка вызвать виртуальный метод void android.widget.LinearLayout.addView (android.view.View) для ссылки на нулевой объект
Как я могу создать новый ImageView
в моем макете?
layoutImgEditPet все еще упоминается, но он находится в теге <include>. Как мне сослаться на макет, если он во включаемых тегах?
Вы бы выбрали его findViewById()
, как любой другой View
. Однако, если это корневой View
во включенном макете, и вы установили android:id
в теге <include>
, имейте в виду, что идентификатор <include>
имеет приоритет над идентификатором корневого View
. То есть корневой View
получит идентификатор, который находится на <include>
.
Аааааааааааааааааааааааааааааааааааааааааааааааааааала важность мне нужно будет сослаться на включенный макет и найти его внутренний макет с помощью includelayout.innerlayout.findViewById ()
Нет, я не это говорю. Я просто указываю на то, что ID корневого View
может не соответствовать вашим ожиданиям. После того, как он присоединен к иерархии Activity
, вы можете просто использовать findViewById()
напрямую, как и любой другой View
, независимо от того, насколько он вложен, но вы должны использовать правильный идентификатор.
Ооооооо. Я думаю, мне придется вложить линейный макет включенного макета в другой макет, потому что линейный макет, на который я пытался ссылаться, на самом деле является корневым представлением
Это нормально. Вам не нужно его вкладывать. Просто используйте правильный идентификатор, чтобы найти его. Если у вас есть android:id
на теге <include>
, то это идентификатор, который в конечном итоге получит LinearLayout
, независимо от того, какой идентификатор вы установили в теге <LinearLayout>
.
Ах. Понятно! Теперь работает. Спасибо!
Это не
ImageView
. ЭтоlayoutImgEditPet
, это ноль.