web-dev-qa-db-fra.com

android include tag - référence de mise en page non valide

J'ai un problème avec une mise en page différente via la balise include dans le fichier XML de mise en page Android. Lorsque je spécifie la référence de présentation (@layout/...), je reçois une exception InflateException dans Eclipse ADT avec l'erreur suivante: InflateException: vous devez spécifier une référence de présentation valide. L'ID de présentation @ layout/func_edit_simple_calculator_toolbox n'est pas valide.

la référence devrait être valide, car je l'ai sélectionnée dans la liste de mes autres mises en page et je ne l'ai pas saisie. J'utilise Android sdk v2.1

ce sont les fichiers de mise en page

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>

Est-ce que quelqu'un sait quel pourrait être le problème?

merci d'avance

41
Dalibor Frivaldsky

Je pense que je devrais mentionner comment j'ai résolu le même problème. J'ai essayé de nettoyer le projet et cela n'a pas fonctionné. J'ai des noms assez grands pour la mise en page (chrono_first_small_field), et ce n'était pas la cause non plus. 

Fermé Eclipse, et vient de l'ouvrir à nouveau, et cela a fonctionné.

Cela a plus de sens que de devoir implémenter la méthode onMeasure :-)

106
ggomeze

Si quelqu'un tombe sur ce fil à la recherche de cette erreur:

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

Assurez-vous de le faire:

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

et pas:

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

layout devrait pas avoir Android: devant lui.

114
cottonBallPaws

Je ne vois rien de mal à cela, alors c'est un peu étrange. Je ne peux penser qu'à deux choses: 1) Avez-vous essayé d'utiliser un nom de fichier plus court? Il existe quelques restrictions sur ce qui est acceptable dans un nom de fichier, par exemple. pas de caractères majuscules ou symboles, afin d'assurer la compatibilité et la longueur du nom de fichier pourrait être l'un d'eux. 2) Avez-vous essayé de supprimer certaines de vos déclarations Android: ... dans l'include, et de les laisser à <include layout="@layout/..."/>? En réalité, vous n'avez pas besoin de spécifier sa hauteur et sa largeur dans l'inclusion comme cela a déjà été défini dans le fichier de disposition importé.

1
Steve Haley

lancez Eclipse avec l’option -clean et votre problème est résolu garantis . Il faudra environ 30 secondes de plus pour lancer si

0
mrBorna

J'ai "résolu" le problème, mais je ne sais pas ce qui m'a vraiment aidé. Mes fichiers de mise en page n'ont pas subi de réécriture majeure et contiennent pratiquement les mêmes. Le seul changement notable que j'ai effectué avant la résolution du problème a été de remplacer la méthode onMeasure (int, int) dans ma classe d'affichage personnalisé, l'implémentation appelant simplement setMeasuredDimension (100, 100).

0
Dalibor Frivaldsky

Pour moi, le problème était que le nom de la mise en page était incorrect: j'ai utilisé "-" au lieu de "_". Android Studio ne m'a pas dit que quelque chose n'allait pas avant d'essayer de déployer l'application.

0
Lorenzo Barbagli

Vérifier si vide 

<include>
</include>

balises (probablement causées par le formatage automatique du code).

Ils peuvent apparaître quelque part "caché" dans votre XML.

0
dwbrito

Pour ceux qui utilisent Xamarin Studio, j’ai ajouté une série de fichiers AXML provenant d’un projet différent et j’obtenais exactement la même erreur. J'ai simplement arrêté et redémarré Xamarin Studio (PC), ce qui a également résolu le problème. Il est intéressant de noter qu'un autre IDE a le même problème.

0
Victor Chelaru