web-dev-qa-db-fra.com

La mise en page <mise en page> de la mise en page n'a pas de déclaration dans le dossier de mise en page de base [erreur]

Après avoir migré d'Eclipse vers la nouvelle version d'Android Studio 3.2, API 28, le message d'erreur suivant s'affiche sur la présentation de mon application:

La mise en page dans la mise en page n'a pas de déclaration dans la mise en page de base dossier; cela peut entraîner des plantages lorsque la ressource est interrogée dans un fichier configuration qui ne correspond pas à ce qualificatif

Une des mises en page que j'obtiens cette erreur est:

<?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>

Je reçois l'erreur sur la première ligne du premier LinearLayout.

Est-ce que quelqu'un sait comment résoudre cette erreur?

Je vous remercie

UPDATE: Cela semble être un problème d'encodage. J'avais copié les fichiers XML dans le dossier en utilisant l'Explorateur Windows. Après avoir supprimé les fichiers et les avoir copiés dans Android Studio, le problème a été résolu.

24
L Kemp

Dans mon cas, la fermeture et la réouverture du studio Android ont résolu le problème. La reconstruction du projet ou l’invalidation du cache n’a pas aidé.

23
vovahost

Vous pouvez aussi essayer ceci:

Fichier => Invalider caches/Redémarrer => Invalider et redémarrer.

 screenshot

15
Itoun

Si vous concevez votre mise en page: layout-sw320dp layout-sw480dp layout-sw600dp layout-sw720dp

vous devriez ajouter une mise en page par défaut.

enter image description here

3
Anbara Ayoub

Dans mon cas, j'ai résolu cela avec this :

l'androïde me dit ceci id-error: MissingDefaultResource comme le dit la documentation:

Si une ressource est uniquement définie dans des dossiers avec des qualificateurs tels que -land ou -en, et s'il n'y a pas de déclaration par défaut dans le dossier de base (mise en page ou valeurs, etc.), l'application se bloquera si l'utilisateur accède à cette ressource via un fichier Périphérique où le périphérique est dans une configuration sans la donnée qualificatif.

En tant que cas particulier, il n'est pas nécessaire de spécifier les éléments dessinables dans la base dossier; s'il existe une correspondance dans un dossier de densité (tel que drawable-mdpi), cette image sera utilisée et mise à l'échelle. Notez cependant que si vous spécifiez uniquement un dessin dans un dossier comme drawable-en-hdpi, le fichier L'application va planter dans des environnements non anglais.

Il peut y avoir des scénarios où vous avez une ressource, telle que -fr drawable, qui est référencé uniquement à partir d’une autre ressource avec le mêmes qualificatifs (comme un style -fr), qui a lui-même safe les replis. Cependant, cela permet toujours à quelqu'un de référence accidentellement le drawable et crash, il est donc plus sûr de créer un repli factice par défaut dans le dossier de base. Sinon, vous pouvez supprimer le problème en ajoutant des outils: ignore = "MissingDefaultResource" sur l'élément.

(Ce scénario se produit fréquemment avec des traductions de chaînes, où vous pouvez supprimer le code et les ressources correspondantes, mais oubliez Supprimer une traduction. Il existe un identifiant de problème dédié pour ce scénario, Avec l'identifiant 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">

Mais c’est la solution facile, car vous faites rater le recours à Android.

Je résous le problème avec l’option système de fichiers. Si Android vous informe sur le manque de ressource, cela signifie qu'il manque quelque chose et vous devriez le réapprovisionner.

vous devriez aller à\app\src\main\res

peut-être: clic droit dans le dossier manquant du fichier, afficher dans Exporer, puis revenir à\app\src\main\res

Vous devriez être trouver 

/layout

/layout-normal

/layout-large

/some more folders

Vous devriez trouver où les fichiers sont manquants. Dans mon cas, il manque dans/layout

2
Walter Palacios

Dans mon cas, il semble que Google attendait (ou au moins accepte) différents noms entre différentes mises en page; J'ai eu un time_dialog.xml et un time_dialog_landscape.xml. Renommer ce dernier en time_dialog.xml a résolu le problème.

1
John Perry

Dans mon cas, cet avertissement est apparu en raison du caractère "incorrect" (point) utilisé dans la valeur name:

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

La suppression des points (clic droit sur un nom, puis Refactor-Rename dans Android Studio) a résolu le problème.

0
Taha

J'ai reçu cette erreur lors du déplacement de fichiers de présentation entre les modules Gradle. Je n'ai pas eu à aller jusqu'à invalider les caches car cela s'est résolu lorsque j'ai redémarré Android Studio et nettoyé le projet. Semble être un bogue IDE.

0
Travis Castillo

Ce problème semble se produire car studio ou le compilateur n'est pas en mesure de trouver le fichier de ressources dans le dossier de présentation de base. Pour résoudre le problème, vous devrez peut-être créer le fichier dans différents dossiers de présentation. Si vous utilisez des dossiers de présentation v21, v25, etc. pour la conception de présentations pour différents périphériques cibles, vous devrez peut-être également y placer vos fichiers de ressources.

0
rintu