it-swarm.com.de

android include tag - ungültiger Layoutverweis

Ich habe ein Problem mit einem anderen Layout durch das Include-Tag in der Android-Layout-XML-Datei. Beim Angeben der Layoutreferenz (@layout/...) erhalte ich im Eclipse ADT eine InflateException mit dem folgenden Fehler: InflateException: Sie müssen eine gültige Layoutreferenz angeben. Die Layout-ID @ layout/func_edit_simple_calculator_toolbox ist ungültig.

die Referenz sollte gültig sein, da ich sie aus der Liste meiner anderen Layouts ausgewählt und nicht eingegeben habe. Ich verwende Android sdk v2.1

dies sind die Layoutdateien

func_edit_simple_calculator_toolbox.xml

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
  xmlns:Android="http://schemas.Android.com/apk/res/Android"
  Android:layout_height="wrap_content" Android:layout_width="wrap_content">

<TableRow Android:id="@+id/TableRow01" Android:layout_width="wrap_content"Android:layout_height="wrap_content">
<Button Android:id="@+id/Button01" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="1"></Button>
<Button Android:id="@+id/Button02" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="2"></Button>
<Button Android:id="@+id/Button03" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="3"></Button>
<Button Android:id="@+id/Button04" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="+"></Button>
</TableRow>
<TableRow Android:id="@+id/TableRow02" Android:layout_width="wrap_content" Android:layout_height="wrap_content">
<Button Android:id="@+id/Button05" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="4"></Button>
<Button Android:id="@+id/Button06" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="5"></Button>
<Button Android:id="@+id/Button07" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="6"></Button>
<Button Android:id="@+id/Button08" Android:layout_width="wrap_content" Android:layout_height="wrap_content" Android:text="-"></Button>
</TableRow>
</TableLayout>

function_editor_layout.xml

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

<com.calculoid.FunctionView Android:id="@+id/function_view" Android:layout_width="fill_parent" Android:layout_height="fill_parent"/>

<include Android:id="@+id/include01" Android:layout_width="wrap_content" Android:layout_height="wrap_content" layout="@layout/func_edit_simple_calculator_toolbox"></include>
</LinearLayout>

Weiß jemand, was das Problem sein könnte?

danke im Voraus

41

Ich denke, ich sollte erwähnen, wie ich dasselbe Problem gelöst habe. Versuchte das Projekt zu reinigen und funktionierte nicht. Ich habe ziemlich große Namen für das Layout (chrono_first_small_field), und das war auch nicht die Ursache. 

Eclipse geschlossen und gerade wieder geöffnet, und das hat funktioniert.

Das ist sinnvoller als die onMeasure-Methode implementieren zu müssen :-)

106
ggomeze

Wenn jemand auf diesen Thread stößt und nach diesem Fehler sucht:

Caused by: Android.view.InflateException: You must specifiy a layout in the include tag: <include layout="@layout/layoutID" />

Stellen Sie sicher, dass Sie Folgendes tun:

<include layout="@layout/your_layout" />

und nicht:

<include Android:layout="@layout/your_layout" />

layout sollte nichtAndroid: vor sich haben.

114
cottonBallPaws

Ich sehe nichts sofort als falsch, daher ist das ein bisschen seltsam. Ich kann nur an zwei Dinge denken: 1) Haben Sie versucht, einen kürzeren Dateinamen zu verwenden? Es gibt einige Einschränkungen, was in einem Dateinamen zulässig ist, z. Keine Großbuchstaben oder Symbole, um Kompatibilität und Dateinamenlänge sicherzustellen. 2) Haben Sie versucht, einige Ihrer Android-Anweisungen zu entfernen: ... im Include und belassen Sie es nur bei <include layout="@layout/..."/>? Sie müssen nicht wirklich die Höhe und Breite im Include angeben, da dies bereits in der importierten Layoutdatei definiert ist.

1
Steve Haley

starten Sie Eclipse mit der Option -clean und Ihr Problem ist behoben garantiert . Das Starten dauert jedoch etwa 30 Sekunden

0
mrBorna

Ich habe das Problem "gelöst", weiß aber nicht, was wirklich geholfen hat. Meine Layout-Dateien wurden nicht grundlegend überarbeitet und enthalten praktisch das gleiche. Die einzige bemerkenswerte Änderung, die ich vorgenommen habe, bevor das Problem behoben wurde, war das Überschreiben der onMeasure (int, int) -Methode in meiner benutzerdefinierten Ansichtsklasse, wobei die Implementierung nur setMeasuredDimension (100, 100) aufrief.

0

Für mich bestand das Problem darin, dass der Name des Layouts falsch war: Ich habe "-" anstelle von "_" verwendet. Android Studio hat mir nicht gesagt, dass etwas nicht stimmte, bis ich versuchte, die App bereitzustellen

0

Überprüfen Sie auf leer 

<include>
</include>

tags (wahrscheinlich durch automatische Code-Formatierung verursacht).

Sie können irgendwo in Ihrer XML-Datei "versteckt" erscheinen.

0
dwbrito

Für diejenigen, die Xamarin Studio verwenden - ich habe eine Reihe von AXML-Dateien aus einem anderen Projekt hinzugefügt, und es wurde genau der gleiche Fehler angezeigt. Ich habe Xamarin Studio (PC) einfach heruntergefahren und neu gestartet. Dadurch wurde auch das Problem gelöst. Es ist interessant, dass eine andere IDE das gleiche Problem hat.

0
Victor Chelaru