В моем приложении мне нужно часто переключаться между двумя макетами. Ошибка происходит в макете, размещенной ниже.У указанного ребенка уже есть родитель. Вы должны сначала вызвать removeView() для родителя ребенка (Android)
Когда мой макет называется в первый раз, ошибки не возникает, и все в порядке. Когда я затем вызвать другую раскладку (пробел один), а затем назвать мой макет во второй раз, он дает мне следующую ошибку:
> 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);
}
}
}
Я знаю, что этот вопрос задавали раньше, но это не помогло в моем случае.
Иногда случайные ответы, которые не являются именно ответы на задаваемые вопросы, помогут кому-то еще. Это сработало для меня. Благодаря! –
Ницца !, и поэтому люди в большинстве случаев пропускают «нуль» как 2d-параметры на надувных устройствах. Благодарю. – superUser
Передача Null параметру, ответственному за родителя, не плохая идея, но вы должны знать, что в этом случае дочерний вид (тот, который вы надуваете) не сможет правильно измерить его в некоторых случаях, потому что он ничего не знаю о родителях. В некоторых случаях это будет работать, но в некоторых нет. – Sniper