Das angegebene Kind hat bereits ein Elternteil. Sie müssen removeView () auf dem übergeordneten Element des Kindes zuerst aufrufen (Android)

In meiner App muss ich häufig zwischen zwei Layouts wechseln. Der Fehler tritt im unten angegebenen Layout auf.

Wenn mein Layout das erste Mal aufgerufen wird, tritt kein Fehler auf und alles ist in Ordnung. Wenn ich dann ein anderes Layout aufrufe (ein leeres) und danach mein Layout ein zweites Mal aufrufe, erhalte ich die folgende Fehlermeldung:

> FATAL EXCEPTION: main
>     java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

Mein Layout-Code sieht so aus:

    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);
        }
    }
}

Ich weiß, dass diese Frage bereits gestellt wurde, aber in meinem Fall hat sie nicht geholfen.

Antworten auf die Frage(28)

Ihre Antwort auf die Frage