Được rồi, vì vậy điều này bắt đầu thực sự làm phiền tôi. Lỗi này xuất hiện một cách rất đặc biệt, không hợp lý lắm.
Hãy để tôi bắt đầu bằng cách nói rằng tôi đã xem xét các câu hỏi khác liên quan đến lỗi này, Google cũng vậy. Theo như tôi có thể nói, hầu hết các vấn đề tương tự xảy ra bởi vì mọi người tham chiếu đến một String
tài nguyên hoặc thứ gì đó khác không nằm trong cùng một tệp bố cục, họ đặt sai dấu '+' trong '@ id +' hoặc thứ gì đó tương tự.
Sự cố tôi đang gặp phải xảy ra trong tệp .xml có bố cục với RelativeLayout
. Điều này chứa a TableLayout
, hai LinearLayout
s chứa một số văn bản và cuối cùng là a ProgressBar
. Điều tôi muốn là thanh tiến trình được căn chỉnh với bố cục tương đối bằng cách sử dụng android:layout_alignParentBottom="true"
và sau đó căn chỉnh hai bố cục tuyến tính phía trên thanh tiến trình (bố cục tuyến tính phía dưới căn chỉnh phía trên thanh tiến trình, bố cục còn lại căn chỉnh phía trên bố cục tuyến tính phía dưới).
Nó phải đủ đơn giản và trông như thể nó hoạt động, tức là chế độ xem đồ họa hiển thị kết quả mong muốn. Tuy nhiên, và đây là vấn đề , Eclipse cho tôi một lỗi trên hai bố cục tuyến tính,
"Lỗi: Không tìm thấy tài nguyên nào khớp với tên đã cho (tại 'layout_above' với giá trị '@ id / LinearLayout_acc')."
và lỗi tương tự đối với bố cục tuyến tính khác tham chiếu đến thanh tiến trình. Tôi đã kiểm tra hơn ba lần rằng không có lỗi chính tả nào (id cũng tồn tại trong packagename.R.java) và tôi đã thử làm sạch dự án hàng chục lần.
Tôi không gặp lỗi khi lưu (và xây dựng tự động), cho đến khi tôi quyết định chạy dự án. Một điều kỳ lạ khác là khi tôi tham chiếu đến bố cục tuyến tính dưới cùng từ thanh tiến trình thay vì bố trí tuyến tính trên cùng, tôi không gặp lỗi!
Tệp bố cục của tôi:
<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>
Xin hãy giúp đỡ, tôi không biết điều gì gây ra lỗi này!
Chỉnh sửa bằng câu trả lời
Shrikant đến với giải pháp thay đổi thứ tự xuất hiện trong tệp bố cục để các phần tử chỉ tham chiếu đến các phần tử khác đã được xác định khi tham chiếu được đọc.
Ngoài ra, như những người khác đã đăng, việc thay đổi @id/
thành @+id/
, ngay cả trong một tham chiếu, sẽ xóa các thông báo lỗi. Như Marco W. đã viết trong chủ đề này, vấn đề là bạn phải sử dụng @+id/
lần đầu tiên mỗi id được đề cập và sau đó sử dụng @id/
sau đó, mặc dù lần đầu tiên có thể không phải là định nghĩa.
Tôi đã thực hiện hầu hết thiết kế và đặt id được giới thiệu trong trình soạn thảo đồ họa của Eclipse, vì vậy mã dẫn đến thông báo lỗi được tự động chèn vào. Có thể đây là một lỗi trong Eclipse.