Мне приходится часто переключаться между двумя раскладками. Ошибка происходит в макете, размещенном ниже.
Когда мой макет вызывается в первый раз, ошибки не возникает, и все в порядке. Когда я затем вызываю другой макет (пустой) и затем вызываю мой макет во второй раз, он выдает следующую ошибку:
> FATAL EXCEPTION: main
> java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
Мой макет-код выглядит так:
tv = new TextView(getApplicationContext()); // are initialized somewhere else
et = new EditText(getApplicationContext()); // in the code
private void ConsoleWindow(){
runOnUiThread(new Runnable(){
@Override
public void run(){
// MY LAYOUT:
setContentView(R.layout.activity_console);
// LINEAR LAYOUT
LinearLayout layout=new LinearLayout(getApplicationContext());
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);
// TEXTVIEW
layout.addView(tv); // <========== ERROR IN THIS LINE DURING 2ND RUN
// EDITTEXT
et.setHint("Enter Command");
layout.addView(et);
}
}
}
Я знаю, что этот вопрос уже задавался, но в моем случае это не помогло.
java
android
android-edittext
textview
parent-child
blackst0ne
источник
источник
LinearLayout
но вы добавляетеTextView
. Так что исправь это.TranstitionManager.beginDelayedTransition
, кто использует , пожалуйста, проверьте мой ответ здесьОтветы:
Сообщение об ошибке говорит, что вы должны сделать.
источник
просто передайте аргумент attachtoroot как ложный
источник
attachToRoot
= ложь, это путь.Я пришел сюда при поиске ошибки с моимайзером, но решение не сработало (очевидно). Я написал причину и решение для нее на случай повторного просмотра. Надеюсь, это кому-нибудь поможет.
Ошибка вызывается, если
onCreateViewHolder()
используется следующий метод:Вместо этого должно быть
источник
Я получил это сообщение , пытаясь зафиксировать фрагмент, используя присоединение к корню в true вместо false, вот так:
После выполнения:
Это сработало.
источник
Если другое решение не работает, как:
проверить, что вы возвращаете из onCreateView фрагмента, это один вид или группа просмотра? в моем случае у меня был viewpager в корне xml фрагмента, и я возвращал viewpager, когда я добавил viewgroup в макет, я не обновил, что я должен возвращать viewgroup сейчас, а не viewpager (view).
источник
frameLayout.addView (bannerAdView); <----- если вы получили ошибку в этой строке, сделайте, как показано ниже ..
источник
Моя ошибка была определить вид следующим образом:
Не хватало
источник
В моем случае проблема была вызвана тем, что я раздувал родительский вид с
<merge>
макетом. В этом случаеaddView()
произошел сбой.Удаление
addView()
помогло решить проблему.источник
проверьте, если вы уже добавили вид
источник
Код ниже решил это для меня:
Примечание: ошибка была из моего класса фрагмента, и, переопределив метод onDestroy следующим образом, я мог бы ее исправить.
источник
источник
В моем случае это происходит, когда я хочу добавить представление по родителю в другое представление
Вы должны добавить родительский вид, как это
источник
Сначала вы должны удалить дочернее представление от его родителя.
Если ваш проект находится в Kotlin, ваше решение будет выглядеть немного иначе, чем Java. Kotlin упрощает приведение
as?
, возвращая ноль, если левая сторона равна нулю или произойдет сбой.Решение по расширению Kotlin
Если вам нужно сделать это более одного раза, добавьте это расширение, чтобы сделать ваш код более читабельным.
Он будет безопасно ничего не делать, если это представление равно нулю, родительское представление равно нулю или родительское представление не является ViewGroup
источник
Я нашел другое исправление:
Здесь у меня просто есть оператор if, проверяющий, есть ли у представления родительский элемент, и если он не создал новый диалог, установите contentView и отобразите диалог в моем методе «createAlgorithmDialog ()».
Это также устанавливает положительные и отрицательные кнопки (кнопки «ОК» и «Отмена») с помощью onClickListeners.
источник
Вы можете использовать этот метод, чтобы проверить, есть ли у представления дети или нет.
источник
Мой случай был другим, дочернее представление уже имело родительское представление, я добавляю дочернее представление в родительском представлении другому родителю. пример кода ниже
И я раздул это представление и добавил к другому LinearLayout, затем я удалил LinaarLayout из вышеприведенного макета, и он начал работать
код ниже исправил проблему:
источник
Моя проблема связана со многими другими ответами, но немного другой причиной необходимости внесения изменений ... Я пытался преобразовать действие в фрагмент. Поэтому я переместил код накачки из onCreate в onCreateView, но я забыл преобразовать setContentView в метод inflate, и то же исключение IllegalStateException привело меня на эту страницу.
Я изменил это:
к этому:
Это решило проблему.
источник