Nella mia app, devo passare frequentemente da un layout all'altro. L'errore sta accadendo nel layout pubblicato qui sotto.Il figlio specificato ha già un genitore. Devi chiamare removeView() sul genitore del bambino per primo (Android)
Quando il mio layout viene chiamato la prima volta, non si verificano errori e tutto va bene. Quando poi ho chiamo un layout diverso (uno vuoto) e poi chiamo il mio layout per la seconda volta, mi dà il seguente errore:
> FATAL EXCEPTION: main
> java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
mio layout codice simile a questo:
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);
}
}
}
So che questa domanda è stata fatta prima, ma non è stata d'aiuto nel mio caso.
risposte volte casuali che non sono esattamente le risposte ai quesiti sottoposti aiutare qualcun altro. Questo ha funzionato per me. Grazie! –
Bello !, ed è per questo che la gente dovrebbe per lo più passare "nullo" come parametro 2d negli inflatori. Grazie. – superUser
Passare Null al parametro responsabile per il genitore non è una cattiva idea, ma devi sapere che in questo caso la vista figlio (quella che si gonfia) non sarà in grado di misurarla correttamente in alcuni casi, perché lo fa non so nulla del genitore. In alcuni casi funzionerà, ma in alcuni non lo farebbe. – Sniper