Гаразд, отже, це мене починає дуже дратувати. Ця помилка з’являється у дуже особливий, не дуже логічний спосіб.
Дозвольте мені спершу сказати, що я вже розглядав інші питання щодо цієї помилки, Google також це зробив. Наскільки я можу зрозуміти, більшість подібних проблем виникають через те, що люди посилаються на Stringресурс чи щось інше, що не знаходиться в одному файлі макета, вони замінюють знак "+" у "@ id +" або щось подібне.
Проблема, що виникає у мене, виникає у файлі .xml макета з файлом RelativeLayout. Він містить a TableLayout, два LinearLayouts, що містять деякий текст, і нарешті a ProgressBar. Я хочу, щоб панель прогресу була вирівняна за відносним макетом за допомогою, android:layout_alignParentBottom="true"а потім вирівняла два лінійних макети над індикатором прогресу (нижній лінійний макет вирівнює над смугою прогресу, інший вирівнює над нижньою лінійною розкладкою).
Він повинен бути досить простим і виглядає так, ніби це працює, тобто графічний вигляд показує бажаний результат. Однак, і ось проблема : Eclipse видає мені помилку на двох лінійних макетах,
"Помилка: Не знайдено жодного ресурсу, що відповідає даному імені (у 'layout_above' зі значенням '@ id / LinearLayout_acc')."
та та сама помилка для іншого лінійного макета, що стосується індикатора прогресу. Я більше ніж втричі перевірив відсутність помилок (ідентифікатори також існують у ім'я пакета.R.java), і я пробував чистити проект десяток разів.
Я не отримую помилку під час збереження (та автоматичного складання), поки не вирішу запустити проект. Ще одна дивна річ полягає в тому, що коли я посилаюся на нижній лінійний макет із панелі прогресу замість верхнього лінійного макета, я не отримую помилки!
Мій файл макета:
<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>
Будь ласка, допоможіть, я поняття не маю, що спричиняє цю помилку!
Редагувати з відповідями
Шрікант запропонував рішення змінити порядок появи у файлі макета таким чином, щоб елементи посилалися лише на інші елементи, вже визначені при читанні посилання.
Крім того, як публікували інші, зміна @id/на @+id/, навіть у посиланні, видаляє повідомлення про помилку. Як писав у цій темі Марко В. , справа в тому, що ви повинні використовувати @+id/перший раз, коли кожен ідентифікатор згадується, а потім використовувати @id/потім, хоча перший час може не бути визначенням.
Я зробив більшу частину дизайну та встановив вказані ідентифікатори в графічному редакторі Eclipse, тому код, що призвів до повідомлення про помилку, був автоматично вставлений. Можливо, це помилка в Eclipse.