Tengo que cambiar entre dos diseños con frecuencia. El error está ocurriendo en el diseño publicado a continuación.
Cuando se llama mi diseño por primera vez, no se produce ningún error y todo está bien. Cuando llamo a un diseño diferente (uno en blanco) y luego llamo a mi diseño por segunda vez, arroja el siguiente error:
> FATAL EXCEPTION: main
> java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
Mi código de diseño se ve así:
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);
}
}
}
Sé que esta pregunta se ha hecho antes, pero no ayudó en mi caso.
java
android
android-edittext
textview
parent-child
blackst0ne
fuente
fuente
LinearLayout
pero tú agregasTextView
. Así que arréglalo.TranstitionManager.beginDelayedTransition
, compruebe mi respuesta aquíRespuestas:
El mensaje de error dice lo que debe hacer.
fuente
simplemente pasa el argumento attachtoroot como falso
fuente
attachToRoot
= falso, es el camino a seguir.Vine aquí buscando el error con mi vista de reciclador pero la solución no funcionó (obviamente). He escrito la causa y la solución para ello en caso de una vista de reciclaje. Espero que ayude a alguien.
El error se produce si se
onCreateViewHolder()
sigue el siguiente método:En cambio debería ser
fuente
Recibí este mensaje al intentar cometer un fragmento usando adjuntar a raíz a verdadero en lugar de falso, así:
Después de hacer:
Funcionó.
fuente
Si otra solución no funciona como:
compruebe qué devuelve de onCreateView del fragmento, ¿es una vista única o un grupo de vista? en mi caso tenía viewpager en la raíz de xml de fragmento y estaba devolviendo viewpager, cuando agregué viewgroup en el diseño no actualicé que tengo que devolver viewgroup ahora, no viewpager (view).
fuente
frameLayout.addView (bannerAdView); <----- si obtiene un error en esta línea, haga lo siguiente ...
fuente
Mi error fue definir la vista de esta manera:
Faltaba:
fuente
En mi caso, el problema fue causado por el hecho de que estaba inflando la Vista principal con el
<merge>
diseño. En este caso,addView()
causó el accidente.La eliminación
addView()
ayudó a resolver el problema.fuente
compruebe si ya agregó la vista
fuente
El siguiente código lo resolvió para mí:
Nota: El error fue de mi clase de fragmentos y al anular el método onDestroy como este, pude resolverlo.
fuente
fuente
En mi caso, sucede cuando quiero agregar una vista de padre a otra vista
debes agregar una vista principal como esta
fuente
Primero debe eliminar la vista secundaria de su elemento primario.
Si su proyecto está en Kotlin, su solución se verá ligeramente diferente a Java. Kotlin simplifica el lanzamiento con
as?
, devolviendo nulo si el lado izquierdo es nulo o falla el lanzamiento.Solución de extensión Kotlin
Si necesita hacer esto más de una vez, agregue esta extensión para que su código sea más legible.
No hará nada con seguridad si esta Vista es nula, la vista primaria es nula o la vista primaria no es un ViewGroup
fuente
Encontré otra solución:
Aquí solo tengo una instrucción if para verificar si la vista tenía un padre y si no lo hizo Crear el nuevo diálogo, establecer el contentView y mostrar el diálogo en mi método "createAlgorithmDialog ()".
Esto también configura los botones positivo y negativo (ok y cancelar botones) con onClickListeners.
fuente
Puede usar este método para verificar si una vista tiene hijos o no.
fuente
Mi caso era diferente, la vista secundaria ya tenía una vista principal. Estoy agregando la vista secundaria dentro de la vista principal a una vista principal diferente. ejemplo de código a continuación
Y estaba inflando esta vista y agregando a otro LinearLayout, luego eliminé el LinaarLayout del diseño anterior y comenzó a funcionar
El siguiente código solucionó el problema:
fuente
Mi problema está relacionado con muchas de las otras respuestas, pero una razón un poco diferente para necesitar hacer el cambio ... Estaba tratando de convertir una Actividad en un Fragmento. Así que moví el código de inflado de onCreate a onCreateView, pero olvidé convertir de setContentView al método de inflado, y la misma IllegalStateException me trajo a esta página.
Cambié esto:
a esto:
Eso resolvió el problema.
fuente