さて、これは本当に私を困らせ始めています。このエラーは、非常に論理的ではなく、特別な方法で表示されます。
まず、このエラーに関する他の質問についてはすでに説明しましたが、Googleも同じだと言いました。私の知る限り、ほとんどの同様の問題String
は、同じレイアウトファイル内にないリソースまたはその他のものを参照するために発生し、「+」を「@ id +」または同様の何かに誤って配置します。
私が抱えている問題は、.xmlファイルのレイアウトで発生しますRelativeLayout
。これには、テキストを含むTableLayout
2つLinearLayout
のが含まれ、最後にが含まれますProgressBar
。私が欲しいのは、プログレスバーを使用して相対レイアウトにandroid:layout_alignParentBottom="true"
揃え、次にプログレスバーの上に2つの線形レイアウトを配置することです(一番下の線形レイアウトはプログレスバーの上に配置され、もう一方は下の線形レイアウトの上に配置されます)。
それは十分に単純でなければならず、それが機能するかのように見えます。つまり、グラフィックビューは望ましい結果を示します。しかし、ここで問題が発生し、Eclipseは2つの線形レイアウトでエラーを出します。
「エラー:指定された名前に一致するリソースが見つかりません( 'layout_above'に値 '@ id / LinearLayout_acc'で)。」
進行状況バーを参照する他の線形レイアウトについても同じエラーが発生します。タイプミスがないこと(パッケージ名.R.javaにもIDが存在すること)を3回以上確認し、プロジェクトを数十回クリーニングしようとしました。
プロジェクトの実行を決定するまでは、保存(および自動ビルド)のときにエラーが発生しません。もう1つの奇妙なことは、上部の線形レイアウトではなく、進行状況バーから下部の線形レイアウトを参照しても、エラーが発生しないことです。
私のレイアウトファイル:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/background_activity" >
<TableLayout
... />
<LinearLayout
android:id="@+id/LinearLayout_dist"
android:layout_above="@id/LinearLayout_acc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp" >
<TextView
... />
<TextView
... />
</LinearLayout>
<LinearLayout
android:id="@+id/LinearLayout_acc"
android:layout_above="@id/ProgressBar_statusScreen"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" >
<TextView
... />
<TextView
... />
</LinearLayout>
<ProgressBar
android:id="@+id/ProgressBar_statusScreen"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_margin="16dp" />
</RelativeLayout>
助けてください、このエラーの原因はわかりません!
回答付きで編集
Shrikantは、要素が参照を読み取るときに既に定義されている他の要素のみを参照するように、レイアウトファイル内の外観の順序を変更するソリューションを備えています。
また、他のユーザーが投稿した@id/
ので@+id/
、たとえ参照であってもに変更すると、エラーメッセージは削除されます。Marco W.がこのスレッドで書いたように@+id/
、最初@id/
の定義ではない場合でも、最初に各IDが言及された後に使用する必要があります。
ほとんどのデザインを作成し、Eclipseのグラフィカルエディターで参照IDを設定したので、エラーメッセージが表示されるコードが自動的に挿入されました。多分これはEclipseのバグです。