Как программно добавить представления в приложение для Android

#android #view

#Android #Вид

Вопрос:

Я пытался добавить представление в свое приложение для Android, но оно продолжает выдавать исключение. Добавляемое мной представление представляет собой линейное представление, которое содержит imageview и вложенное линейное представление с 3 текстовыми представлениями. Представление, в которое я его добавляю, представляет собой LinearLayout с флажком, 2 textviews и вложенный relativelayout с кнопкой и EditText.

Они находятся в отдельных XML-файлах, и я увеличил добавляемое представление. Однако, когда я вызываю addView (), он выдает следующее исключение:

06-10 09:24:33.094: ОШИБКА / AndroidRuntime (5743): исключение java.lang.RuntimeException: Не удается возобновить активность {com.projects.twitterOAuth/com.projects.twitterOAuth.twitterOAuth}: java.lang.Исключение IllegalStateException: у указанного дочернего элемента уже есть родительский элемент. Сначала вы должны вызвать removeView() для родительского элемента дочернего элемента.

Ответ №1:

Когда вы расширяете свой дочерний вид, убедитесь, что parent параметру (последнему) присвоено значение null.

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

1. Спасибо за ответ. Я уже установил для него значение null: LinearLayout fpost = (LinearLayout)inflater.inflate(R.layout.fpost, null, true); Я пробовал это с последним параметром и без него, но по какой-то причине, когда я проверяю его во время отладки, при вызове fpost.getParent() в качестве родительского параметра по-прежнему установлено LinearLayout.

2. Мне нравится использовать View.inflate() метод. Что-то вроде View.inflate(this, R.layout.fpost,null) . Но в вашем случае укажите последний параметр false , чтобы не привязываться к root.