#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.