Tamam, yani bu beni gerçekten kızdırmaya başladı. Bu hata çok mantıklı değil, çok özel bir şekilde ortaya çıkıyor.
Bu hatayla ilgili diğer sorulara zaten baktığımı söyleyerek başlayayım, Google da yaptı. Anlayabildiğim kadarıyla, benzer sorunların çoğu, insanlar Stringaynı düzen dosyası içinde olmayan bir kaynağa veya başka bir şeye başvurdukları için ortaya çıkıyor , '@ id +' içindeki '+' veya benzeri bir şeyi yanlış yerleştiriyorlar.
Yaşadığım sorun, bir .xml düzeninde .xml dosyasında RelativeLayout. Bu, bir metin içeren a TableLayout, iki LinearLayouts ve son olarak a içerir ProgressBar. İstediğim, ilerleme çubuğunun ilgili düzen ile hizalanması android:layout_alignParentBottom="true"ve ardından ilerleme çubuğunun üzerindeki iki doğrusal düzeni hizalaması (alt doğrusal düzen, ilerleme çubuğunun üzerinde, diğeri alt doğrusal düzenin üzerinde hizalanır ).
Yeterince basit olmalı ve çalışıyormuş gibi görünmelidir, yani grafik görünüm istenen sonucu gösterir. Ancak, ve işte sorun geliyor , Eclipse bana iki doğrusal düzende bir hata veriyor,
"Hata: Verilen adla eşleşen kaynak bulunamadı ('layout_above'da' @ id / LinearLayout_acc 'değeriyle)."
ve ilerleme çubuğuna atıfta bulunan diğer doğrusal düzen için aynı hata. Üç defadan fazla yazım hatası olmadığını kontrol ettim (id'ler aynı zamanda paketadı.R.java'da da var) ve projeyi bir düzine kez temizlemeyi denedim.
Projeyi çalıştırmaya karar verene kadar kaydederken (ve otomatik oluştururken) hatayı almıyorum. Bir başka garip şey de, üstteki doğrusal düzen yerine ilerleme çubuğundan alt doğrusal düzene baktığımda hata almıyorum!
Düzen dosyam:
<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>
Lütfen yardım edin, bu hataya neyin sebep olduğu hakkında hiçbir fikrim yok!
Cevaplarla düzenleyin
Shrikant, mizanpaj dosyasındaki görünüm sırasını değiştirme çözümüyle geldi, böylece elemanlar, referans okunduğunda yalnızca önceden tanımlanmış diğer öğelere başvurur.
Diğerleri, yayınlanan değişen gibi Ayrıca @id/etmek @+id/bile referans, hata mesajlarını kaldırmak yapar. Marco W.'nin bu ileti dizisinde yazdığı gibi , mesele şu ki, @+id/her bir id'den ilk bahsedildiğinde kullanmanız ve daha sonra kullanmanız gerekir @id/, ancak ilk sefer bir tanım olmasa da.
Tasarımın çoğunu yaptım ve atıfta bulunulan id'leri Eclipse'in grafik düzenleyicisinde ayarladım, böylece bir hata mesajı ile sonuçlanan kod otomatik olarak eklendi. Belki bu Eclipse'deki bir hatadır.