web-dev-qa-db-ja.com

android includeタグ-無効なレイアウト参照

Androidレイアウトxmlファイルのincludeタグを使用して別のレイアウトを含めると問題が発生します。レイアウト参照(@layout/...)を指定すると、InflateExceptionが発生しますEclipse ADTで次のエラーが発生します:InflateException:有効なレイアウト参照を指定する必要があります。レイアウトID @ layout/func_edit_simple_calculator_toolboxは無効です。

他のレイアウトのリストから選択し、入力しなかったため、参照は有効である必要があります。Android sdk v2.1を使用しています。

これらはレイアウトファイルです

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>

誰が何が問題になるのか知っていますか?

前もって感謝します

42

私は同じ問題をどのように解決したかについて言及すべきだと思います。プロジェクトの掃除を試みましたが、機能しませんでした。レイアウトにかなり大きな名前(chrono_first_small_field)がありますが、それも原因ではありませんでした。

Eclipseを閉じて、もう一度開いただけでうまくいきました。

それはonMeasureメソッドを実装する必要があるよりも意味があります:-)

106
ggomeze

誰かがこのエラーを探してこのスレッドに出くわした場合:

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

次のことを確認してください。

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

およびnot:

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

layoutすべきnotがあるAndroid:その前。

115
cottonBallPaws

すぐに問題が発生することはないので、少し奇妙です。私は2つのことしか考えられません:1)短いファイル名を使用してみましたか?ファイル名で許容されるものにはいくつかの制限があります。互換性とファイル名の長さを確保するために、大文字や記号はそれらの1つである可能性があります。 2)一部のAndroid:...ステートメントをインクルードから削除して、<include layout="@layout/..."/>?インポートされたレイアウトファイルですでに定義されているため、実際にはインクルードで高さと幅を指定する必要はありません。

1
Steve Haley

-cleanオプションを指定してEclipseを起動すると、問題は修正されますguaranteed。起動までに約30秒かかります

0
mrBorna

私は問題を「解決」しましたが、何が本当に役に立ったのかわかりません。私のレイアウトファイルは大幅な書き直しを行わず、実際には同じものを含んでいます。問題がなくなる前に私が行った唯一の注目すべき変更は、カスタムビュークラスのonMeasure(int、int)メソッドをオーバーライドすることでした。実装は、setMeasuredDimension(100、100)を呼び出しているだけです。

0

私にとっての問題は、レイアウトの名前が間違っていることでした。「_」の代わりに「-」を使用しました。 Android Studioは、アプリをデプロイしようとするまで、問題があることを通知しませんでした

0

空を確認

<include>
</include>

タグ(おそらく自動コードフォーマットによって引き起こされます)。

それらはxmlのどこかに「隠されている」可能性があります。

0
dwbrito

Xamarin Studioを使用している人のために-別のプロジェクトから多数のAXMLファイルを追加したところ、まったく同じエラーが発生していました。 Xamarin Studio(PC)をシャットダウンして再起動するだけで問題も解決しました。興味深いのは、別のIDEに同じ問題があることです。

0
Victor Chelaru