it-swarm.com.de

Das Layout <Layout> im Layout enthält keine Deklaration im Basis-Layoutordner [Fehler].

Nach der Migration von Eclipse auf die neue Version von Android Studio 3.2, API 28, erhalte ich folgende Fehlermeldung im Layout meiner App:

Das Layout im Layout enthält keine Deklaration im Basislayout Mappe; Dies kann zu Abstürzen führen, wenn die Ressource in einer .__ abgefragt wird. Konfiguration, die diesem Qualifier nicht entspricht

Eines der Layouts, die diesen Fehler erhalten, ist:

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

Ich erhalte den Fehler in der ersten Zeile des ersten LinearLayout.

Kann jemand diesen Fehler beheben?

Vielen Dank

UPDATE: Es scheint ein Codierungsproblem zu sein. Ich hatte die XML-Dateien mit Windows Explorer in den Ordner kopiert. Nachdem Sie die Dateien gelöscht und in Android Studio kopiert haben, wurde das Problem behoben.

24
L Kemp

In meinem Fall löste das Schließen und Wiederöffnen von Android Studio das Problem. Das Wiederherstellen eines Projekts oder das Ungültigmachen des Cache hat nicht geholfen.

23
vovahost

Sie können dies auch versuchen:

Datei => Caches ungültig machen/Restart => Invalidate and Restart.

 screenshot

15
Itoun

Wenn Sie Ihr Layout erstellen: layout-sw320dp layout-sw480dp layout-sw600dp Layout-sw720dp

sie sollten das Layout standardmäßig hinzufügenwie thise:

enter image description here

3
Anbara Ayoub

In meinem Fall habe ich das mit this gelöst:

das Android sagt mir dies id-error: MissingDefaultResource als Dokumentation sagt:

Wenn eine Ressource nur in Ordnern mit Qualifikationsmerkmalen wie -land oder .__ definiert ist. -en und es gibt keine Standarddeklaration im Basisordner (Layout oder Werte usw.), dann stürzt die App ab, wenn auf eine Ressource auf .__ zugegriffen wird. Gerät, bei dem sich das Gerät in einer Konfiguration befindet, ohne dass die angegebene Qualifikation.

Als Sonderfall müssen Drawables nicht in der Basis angegeben werden Mappe; Wenn ein Dichteordner (z. B. drawable-mdpi) übereinstimmt, wird das Bild verwendet und skaliert. Beachten Sie jedoch, dass Wenn Sie nur ein Zeichen in einem Ordner wie drawable-en-hdpi angeben, wird der Die App stürzt in nicht-englischen Sprachumgebungen ab.

Es kann Szenarien geben, in denen Sie über eine Ressource verfügen, z. B. -fr drawable, das nur von einer anderen Ressource mit der .__ referenziert wird. gleiche Qualifikationsmerkmale (z. B. ein -fr-Stil), für die selbst die sichere Rückschläge. Dies ermöglicht es jedoch immer noch jemandem versehentlich verweisen auf das Zeichen und den Absturz, so dass es sicherer ist Erstellen Sie einen Standard-Dummy-Fallback im Basisordner. Alternativ können Sie kann das Problem durch Hinzufügen von Tools unterdrücken: ignore = "MissingDefaultResource" auf dem Element.

(Dieses Szenario tritt häufig bei Stringübersetzungen auf, bei denen Sie .__ Code und die entsprechenden Ressourcen löschen. Vergessen Sie jedoch nicht, Eine Übersetzung zu löschen. Für dieses Szenario gibt es eine eigene Problem-ID Mit der 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">

Dies ist jedoch die einfache Lösung, weil Sie die Ressourcen in Android verpassen.

Ich löse dies mit der Option Dateisystem. Wenn Android Ihnen etwas über fehlende Ressourcen verrät, bedeutet dies, dass etwas fehlt, und Sie sollten das auffüllen.

Sie sollten zu\app\src\main\res gehen.

vielleicht: Klicken Sie mit der rechten Maustaste in den fehlenden Ordner der Datei, zeigen Sie in Exporer an und gehen Sie zurück zu\app\src\main\res

Du solltest finden 

/layout

/layout-normal

/layout-large

/some more folders

Sie sollten herausfinden, wo die Dateien fehlen. In meinem Fall fehlt das in/layout

2
Walter Palacios

In meinem Fall hat Google anscheinend unterschiedliche Namen zwischen verschiedenen Layouts erwartet (oder zumindest akzeptiert); Ich hatte einen time_dialog.xml und einen time_dialog_landscape.xml. Das Umbenennen des letzteren in time_dialog.xml hat das Problem behoben.

1
John Perry

In meinem Fall wurde dieses Problem durch Großbuchstaben verursacht. Falsche Zeichen wie "-" können ebenfalls das Problem verursachen. Ich habe den Namen geändert von Activity_disease.xml bis activity_disease.xml und das Problem behoben.

1
Dani Nuñez

Was bei mir funktioniert hat, ist das Entfernen des ID-Attributs

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

aus der Layout-Ressource.

0
Ruud Siebierski

Spät zur Party, aber mein Fall ist anders als oben.

Ich habe gerade die Ressource umbenannt und es fing an zu arbeiten.

Eigentlich war mein Ressourcenname ic_menu_black_24dp.xml, sodass ein Konflikt mit der Menüressource von Android auftrat.

0
Ashish Shukla

In meinem Fall wurde diese Warnung aufgrund eines "falschen" Zeichens (Punkt) im Wertnamen angezeigt:

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

Punkte entfernen (Rechtsklick auf einen Namen, dann Refactor-Umbenennen in Android Studio) - das Problem wurde behoben.

0
Taha

Diese Fehlermeldung ist beim Verschieben von Layoutdateien zwischen Gradle-Modulen aufgetreten. Ich musste nicht so weit gehen, Caches ungültig zu machen, da es sich selbst löste, als ich Android Studio neu starte und das Projekt bereinigte. Scheint wahrscheinlich ein IDE Fehler zu sein.

0
Travis Castillo

Dieses Problem scheint aufgetreten zu sein, da Studio oder Compiler die Ressourcendatei nicht im Basislayoutordner finden können. Um das Problem zu lösen, müssen Sie die Datei möglicherweise in verschiedenen Layoutordnern erstellen. Wenn Sie Layoutordner v21, v25 usw. verwenden, um Layouts für verschiedene Zielgeräte zu erstellen, müssen Sie möglicherweise auch Ihre Ressourcendateien dort ablegen.

0
rintu

Ich habe dieses Problem gelöst, indem ich das Projekt einfach mit gradle synchronisiert habe

0
memresubasi