Ошибка, которую вы получаете, трудно найти, потому что ваш код повсюду, но ошибка означает, что вы добавляете View
(дочерний элемент), который уже находится на экране (имеет родительский элемент).
Это может быть где угодно, трудно сказать в этом посте, но, например:
Этот, вероятно, работает:
EditText ed = new EditText(this);
ed.setWidth(250);
lymn.addView(ed);
ed
новый, поэтому не имеетродитель.
Но я не могу найти объявление yes1
, так что это МОЖЕТ быть преступником.Или, может быть, no1
.
yes1.setText("Yes");
no1.setText("NO");
rg1.addView(yes1);
rg1.addView(no1);
lymn.addView(rg1);
Проверьте все свои addView
звонки.(подсказка: в этой ошибке где-то есть номер строки. используйте его)
Чтобы попытаться ответить на ваш вопрос в комментарии, вы должны следовать этим правилам;
- Никогда не добавлятьлюбой вид более одного раза.
- Когда вид уже используется (например, вы получили его с
findViewById
, не используйте на нем addView
. - Когда вы хотите добавитьДля просмотра используйте
addView
с НОВЫМ видом. - Вы можете добавить несколько таких новых видов в один вид, но вы не можете добавить этот вид несколько раз.
- Вы не можетеВы можете повторно использовать представление, просто изменив некоторые вещи. Вы МОЖЕТЕ повторно использовать переменную, но вам нужно создать новое представление, если вы хотите повторно добавить его, используя
addView
.
ИЯ не могу не подчеркнуть это больше: выясните, используя номер строки в ошибке, какая строка приводит к ошибке. Посмотрите, что вы там добавляете, и попытайтесь выяснить с помощью приведенной выше справки, почему это не работает.