El diseño <diseño> en diseño no tiene ninguna declaración en la carpeta de diseño base [error]

97

Después de migrar a Android Studio 3.2, API 28, aparece el siguiente error en el diseño de mi aplicación:

El diseño en diseño no tiene declaración en la carpeta de diseño base; esto puede provocar bloqueos cuando se consulta el recurso en una configuración que no coincide con este calificador

Uno de los diseños que recibo este error es:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="@null" >

      <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="top|center_horizontal"
            android:adjustViewBounds="true"
            android:contentDescription="@string/hello_world"
            android:src="@drawable/loading_top" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center_horizontal"
            android:adjustViewBounds="true"
            android:contentDescription="@string/hello_world"
            android:src="@drawable/loading_bottom" />

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:contentDescription="@string/hello_world"
            android:background="@color/white"
            android:layout_marginBottom="5dp"
            android:paddingTop="10dp"
            android:paddingBottom="10dp"
            android:src="@drawable/loading_logo" />

        <ImageView
            android:id="@+id/loading"
            android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center|center_vertical"
            android:layout_marginBottom="0dp"
            android:layout_marginTop="0dp"
            android:contentDescription="@string/hello_world"
            android:scaleType="fitXY"
            android:src="@null" />
    </FrameLayout>
</LinearLayout>

Recibo el error en la primera línea del primer LinearLayout.

¿Alguien sabe cómo solucionar este error?

Gracias

ACTUALIZACIÓN: Respondí a mi pregunta con lo que me resolvió el problema

L Kemp
fuente
@L Kemp una vez muéstrame tu logcat
Vijaya Varma Lanke
@Varma en realidad la aplicación se ejecuta sin errores. Puedo ver el error una vez que abro el archivo xml, pero el diseño de este archivo xml se ejecuta normalmente
L Kemp
fill_parent está en desuso desde API 8 y se reemplazó con match_parent ViewGroup.LayoutParams
Mahdi Javaheri
@MahdiJavaheri Gracias por tu consejo, sin embargo, ya lo sabía, voy eliminando ese código obsoleto poco a poco.
L Kemp
En mi caso, fue un problema relacionado con el nombre del archivo, también puede verificar cambiando el nombre de su archivo en mayúsculas
Akash kumar

Respuestas:

135

En mi caso, cerrar y reabrir el estudio de Android resolvió el problema. Reconstruir el proyecto o borrar la caché no ayudó.

vovahost
fuente
3
Veo esto cada vez que agrego un nuevo archivo de diseño. Reiniciar / reconstruir lo soluciona, pero ¿alguien encontró la causa raíz?
HBB20
Tenga en cuenta que Build> Clean Project resolvió el problema por mí.
Vivid Kraig
54

También puedes probar esto :

Archivo => Invalidar cachés / Reiniciar => Invalidar y reiniciar.

captura de pantalla

Itoun
fuente
2
Sí, ayuda, pero extraño, que en versiones anteriores Build> Rebuild Project ayudó. Chocaron algo.
CoolMind
Le agregué una ventaja, ya que sus soluciones funcionan para AS 3.2 (en mi caso sin Eclipse).
CoolMind
15

En mi caso fue el uso de letras mayúsculas en el nombre del archivo. Dejé todo en minúsculas y se solucionó.

Zioh
fuente
Este era mi problema. Qué error tan extraño. Simplemente lo puso en minúsculas y todo estuvo bien.
Panama Jack
10

Si diseña su diseño: layout-sw320dp layout-sw480dp layout-sw600dp layout-sw720dp

debe agregar un diseño por defecto como este:

ingrese la descripción de la imagen aquí

Ayoub Anbara
fuente
6

Recibí este error al mover archivos de diseño entre módulos de Gradle . No tuve que ir tan lejos como para invalidar los cachés, ya que se resolvió cuando reinicié Android Studioy limpié el proyecto . Parece probable que sea un error de IDE .

Travis Castillo
fuente
5

En mi caso lo resolví con esto :

el Android me dice este error de identificación : MissingDefaultResource como documentación dice:

Si un recurso solo se define en carpetas con calificadores como -land o -en, y no hay una declaración predeterminada en la carpeta base (diseño o valores, etc.), la aplicación se bloqueará si se accede a ese recurso en un dispositivo donde el dispositivo está en una configuración que falta el calificador dado.

Como caso especial, no es necesario especificar los elementos de diseño en la carpeta base; si hay una coincidencia en una carpeta de densidad (como drawable-mdpi), esa imagen se utilizará y se escalará. Sin embargo, tenga en cuenta que si solo especifica un elemento de diseño en una carpeta como drawable-en-hdpi, la aplicación se bloqueará en configuraciones regionales que no estén en inglés.

Puede haber escenarios en los que tenga un recurso, como un elemento de diseño -fr, al que solo se hace referencia desde algún otro recurso con los mismos calificadores (como un estilo -fr), que a su vez tiene alternativas seguras. Sin embargo, esto aún hace posible que alguien haga referencia accidentalmente al dibujable y se bloquee, por lo que es más seguro crear un respaldo ficticio predeterminado en la carpeta base. Alternativamente, puede eliminar el problema agregando herramientas: ignore = "MissingDefaultResource" en el elemento.

(Este escenario ocurre con frecuencia con las traducciones de cadenas, donde puede eliminar el código y los recursos correspondientes, pero olvida eliminar una traducción. Hay un ID de problema dedicado para ese escenario, con el id ExtraTranslation).

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:tools="http://schemas.android.com/tools"
      tools:ignore="MissingDefaultResource" <!--this-->
      android:layout_width="match_parent"
      android:layout_height="match_parent">

Pero esta es la solución fácil, porque hace que pierda el recurso en Android.

Resuelvo esto con la opción del sistema de archivos . Si Android te dice que falta un recurso, significa que falta algo y debes reponerlo.

deberías ir a \ app \ src \ main \ res

tal vez: haga clic con el botón derecho en la carpeta que falta del archivo, muestre en Exporer y vuelva a \ app \ src \ main \ res

Deberías ser encontrado

/layout

/layout-normal

/layout-large

/some more folders

Debería encontrar dónde faltan los archivos. En mi caso, eso falta en / layout

Walter Palacios
fuente
5

Lo acabo de hacer Build > Clean Project

rmirabelle
fuente
3

En mi caso, este problema fue causado por la letra mayúscula. Los caracteres incorrectos como "-" también pueden causar el problema. Cambié el nombre de Activity_disease.xmla activity_disease.xmly se solucionó el problema.

Dani Nuñez
fuente
2

Nada funcionó para mí como reconstruir el proyecto o invalidar el caché. En mi caso, cerrar y reabrir el estudio de Android resolvió el problema .

Rahul
fuente
1

En mi caso, parece que Google solía esperar (o al menos aceptar) nombres diferentes entre diferentes diseños; Tuve un time_dialog.xmly un time_dialog_landscape.xml. Cambiar el nombre de este último para time_dialog.xmlsolucionar el problema.

John Perry
fuente
1

Resolví este problema simplemente sincronizando el proyecto con gradle

memresubasi
fuente
1

Para mí, los siguientes pasos lo hicieron funcionar:

  1. Corta todo el código de la página ( ctrl+ A+X para Windows)
  2. Pega el código de nuevo.
Vander
fuente
Algo que hice para un problema similar strings.xmltambién, estoy de acuerdo con este
Kevin Murvie
0

Este problema parece estar sucediendo porque el estudio o el compilador no pueden encontrar el archivo de recursos dentro de la carpeta de diseño base. Para resolver el problema, es posible que deba crear el archivo en diferentes carpetas de diseño. Si está utilizando carpetas de diseño v21, v25, etc., carpetas para diseñar diseños para diferentes dispositivos de destino, es posible que también deba colocar sus archivos de recursos allí.

rintu
fuente
0

En mi caso, esta advertencia apareció debido a un carácter "incorrecto" (punto) utilizado en el nombre del valor:

<dimen name="dp.divider.xlarge">24dp</dimen>

La eliminación de puntos (clic derecho en un nombre, luego Refactor-Rename en Android Studio) resolvió el problema.

Taha
fuente
0

Tarde para la fiesta pero mi caso es diferente al de arriba.

Acabo de cambiar el nombre del recurso y comenzó a funcionar.

En realidad, el nombre de mi recurso era ic_menu_black_24dp.xml, por lo que estaba en conflicto con el recurso del menú de Android.

Ashish Shukla
fuente
no debería entrar en conflicto, ya que los recursos del sistema están en un espacio de nombres diferente, e incluso si lo estuvieran, anular con su copia local debería haber estado bien.
Brill Pappin
1
En realidad, obtuve el mismo error que el OP, se debió a otras razones que no se enumeran anteriormente, así que lo resolví con el paso anterior. Había publicado esto en caso de que alguien se enfrentara a un problema como el mío y pudiera obtener ayuda.
Ashish Shukla
0

Lo que funcionó para mí es eliminar el atributo id

android:id="@+id/[id same as filename]"

desde el recurso de diseño.

Ruud Siebierski
fuente
0

Lo que me resolvió:

En Android Studio, haga clic con el botón derecho en el nombre del archivo en el directorio de diseño y elija Reformatear código , sin una casilla de verificación especial seleccionada en la siguiente pantalla.

No estoy seguro de qué sucede exactamente debajo del capó aquí, pero funcionó.

Razvan_TK9692
fuente
0

Tuve un problema después de copiar / pegar código en un archivo de diseño XML, pero lo solucioné simplemente creando el archivo manualmente. Muy extraño, ya que el código era exactamente el mismo, pero de alguna manera solucionó este problema. Intenté reiniciar y hacer la solución "Archivo => Invalidar cachés / Reiniciar => Invalidar y reiniciar", pero el problema solo se solucionó al volver a crear manualmente el archivo.

oggynator
fuente
0

Tenga en cuenta que cuando está utilizando diferentes versiones de diseño como ( Grande / Pequeño / Nornal ), en ese caso, debe utilizar la misma carpeta de diseño principal. así

ingrese la descripción de la imagen aquí

pankaj kumar
fuente
0

(1) Elimine el diseño original.

(2) Vuelva a agregar el diseño.

Paso 1

Paso 2

liqiang
fuente
0

En mi caso, se mostraba el mismo error porque el archivo layout-land y el nombre del archivo layout eran diferentes.

Mi caso: layout-land -> my_layout_land layout -> my_layout

Lo resolví haciendo que ambos nombres de archivo fueran iguales. Porque si está utilizando layout-land y tiene un archivo en layout-land, entonces también debe tener un archivo en la carpeta de layout.

Ujjawal Kumar
fuente
0

Había copiado los archivos xml en la carpeta usando el Explorador de Windows. Parece haber causado un problema de codificación. Después de eliminar los archivos y copiarlos dentro de Android Studio, el problema se resolvió.

L Kemp
fuente