42 votes

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

Je vais avoir un problème, y compris une mise en page différente par le biais de la balise include dans l'android de mise en page fichier xml. Lorsque spécifiant la mise en page de référence ( @mise en page/... ), je suis un InflateException dans l'Eclipse ADT avec l'erreur suivante: InflateException: Vous devez spécifier un valide mise en page de référence. La mise en page ID @mise en page/func_edit_simple_calculator_toolbox n'est pas valide.

la référence doit être valide, comme je l'ai sélectionné de la liste de mes autres mises en page et de ne pas le saisir. Je suis à l'aide du kit sdk d'android 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>

Croit-on savoir quel pourrait être le problème?

merci d'avance

115voto

cottonBallPaws Points 5384

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 non:

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

layout ne devrait pas avoir android: devant lui.

106voto

ggomeze Points 3024

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 :-)

1voto

Steve Haley Points 26928

Je ne vois rien immédiatement de mal à ça, donc c'est un peu bizarre. Je ne peux que penser à deux choses: 1) Avez-vous essayé d'utiliser un court de nom de fichier? Il y a un peu de restrictions sur ce qui est acceptable dans un nom de fichier, par exemple, pas de majuscules, de caractères ou de symboles, afin de s'assurer de la compatibilité et de la longueur du nom de fichier peut être l'un d'eux. 2) Avez-vous essayé de supprimer certains de vos android:... déclarations dans l'include, et en le laissant à juste <include layout="@layout/..."/>? Vous n'avez pas besoin de spécifier la hauteur et la largeur de l'inclure comme c'est déjà définie lors de l'importation du fichier de mise en page.

0voto

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 de vue personnalisée, l'implémentation appelant simplement setMeasuredDimension (100, 100).

0voto

mrBorna Points 728

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X