R là gì:
Không có gì bí ẩn về R. Nó chỉ là một lớp có nhiều lớp con tĩnh, hãy mở nó ra trong eclipse và xem (thuộc gen / của nó).
Mọi thành viên của lớp này là một trong hai thứ: 1) các lớp cuối cùng tĩnh hoặc 2) các số nguyên cuối cùng tĩnh là duy nhất đối với các thành viên khác trong lớp của chúng.
Tại sao nó lại khó hiểu như vậy: Rất
dễ nhầm lẫn vì R được tạo ra tự động bởi kiến. Nó khó hiểu vì bạn không được phép "chạm" vào nó theo cách thủ công (tất nhiên là có thể nhưng các thay đổi của bạn sẽ tự động bị xóa khi tái tạo). Nó cũng khó hiểu vì đôi khi eclipse tự động nhập tệp R tiêu chuẩn của android (như đã thảo luận trong các câu trả lời ở trên)
Tại sao nó luôn là lỗi đầu tiên không thể giải quyết được: R tuân theo chính xác các quy tắc của các lớp và gói Java, không có gì đặc biệt về cách R hoạt động liên quan đến việc nhập. R sẽ tự động được đặt trong gói được chỉ định bởi mục nhập gói trong tệp kê khai của bạn
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="package.which.will.contain.R.and.probably.the.main.package.in.the.application" android:versionName="8.6.2011" android:versionCode="1">
<uses-sdk android:minSdkVersion="13" />
Để xem tệp R của bạn thuộc về gói nào, chỉ cần mở thư mục gen / trong eclipse (dạng xem gói). Bạn sẽ thấy một gói được liệt kê ở đó, nó sẽ có tên bạn đã chỉ định trong tệp kê khai của mình. Hãy thử xóa nó đi, nó sẽ quay trở lại nếu tất cả các tài nguyên của bạn tuân theo các quy tắc đặt tên chính xác và tất cả các tệp xml của bạn tuân theo các quy tắc xml chính xác và nếu tính năng xây dựng tự động được bật trong eclipse.
Chìa khóa để hiểu tệp R là nhận ra rằng nó nằm trong cùng một gói với các lớp khác mặc dù nó nằm trong một thư mục khác sau đó là các tệp khác thuộc gói "chính" của bạn. Sau khi bạn hiểu điều này và hiểu cú pháp và cách đặt tên của tệp tài nguyên, việc khắc phục sự cố với R rất dễ dàng.