2011-07-23 37 views
47

Trong android, tôi không chắc mình có hiểu rõ lớp R hay không. Tôi sẽ xem qua ví dụ về sudoku và tôi có đoạn mã này:Hiểu lớp R trong Android

switch (v.getId()) // the id of the argument passed is evaluated by switch statement 
{ 
    case R.id.about_button: // 
    Intent i = new Intent(this, about.class); 
    startActivity(i); 
    break; 
    // More buttons go here (if any) ... 
} 

Tôi mới sử dụng Java, nhưng từ những gì tôi thu thập có vẻ như là đầu vào (màn hình cảm ứng được chạm vào nút) và đánh giá đối số. Sau đó, tuyên bố trường hợp được thiết lập nếu nút about được nhận diện và màn hình giao diện mới được tạo và sau đó điều hướng đến trên điện thoại.

Điều này có đúng không?

Nếu tôi có ý chính xác, tại sao giao dịch với lớp "R"?

Tại sao nó được gọi để nhận dạng ID của nút?

Tôi nghĩ rằng lớp học siêu hạng (trong dự án này) là lớp SudokuActivity.

+1

bản sao có thể có của [Android: R là gì? Tại sao nó quá khó hiểu?] (Http://stackoverflow.com/questions/4953077/android-what-is-r-why-is-it-so-cryptic) – nbro

Trả lời

68

R.java là lớp được tạo động, được tạo trong quá trình xây dựng để xác định động tất cả nội dung (từ chuỗi tới tiện ích con Android đến bố cục), để sử dụng trong lớp java trong ứng dụng Android. Lưu ý rằng R.java là Android cụ thể (mặc dù bạn có thể sao chép nó cho các nền tảng khác, nó rất thuận tiện), do đó, nó không có nhiều việc phải làm với các cấu trúc ngôn ngữ Java. Hãy xem here để biết thêm chi tiết.

+0

Có bất kỳ tài nguyên nào về cách sao chép 'R .java' xây dựng các dự án khác? –

32

R là lớp chứa chỉ các hằng số công khai. (public static final).

Đây là lớp được tạo (theo Plugin Android trong Eclipse) phản ánh các giá trị khác nhau mà bạn đã xác định trong tệp res.

Ví dụ, bạn nên có một cái gì đó như:

android:id="@+id/about_button" 

ở đâu đó trong một tập tin xml bố trí/thực đơn của bạn trong dự án, và một khi bạn đã viết rằng, Eclipse sẽ tạo ra một hằng số trong file R (mà bạn có thể tìm thấy nó dưới gen/PACKAGE/R.java)

Đọc Resource guide in Android Developers để biết thêm thông tin về điều này.

15

R lớp được tạo bởi công cụ Android từ tài nguyên của bạn trước khi biên dịch mã của bạn. Nó chứa hằng số được gán cho mỗi tài nguyên mà bạn có thể tham chiếu trong dự án của mình. Ví dụ, bạn có tệp tài nguyên XML có chứa about_button. Nếu bạn không có lớp học R, bạn sẽ phải sử dụng chuỗi "about_button" để tham chiếu đến nó trong mã. Nếu bạn mắc lỗi trong chuỗi này, bạn sẽ chỉ tìm hiểu về nó khi bạn chạy ứng dụng của mình. Với R bạn sẽ thấy lỗi sớm hơn nhiều lúc biên dịch.

R được cấu trúc theo cách mà bạn có thể tham khảo tài nguyên thông qua các lớp bên trong của nó. Ví dụ: R.id chứa hằng số id và R.layout chứa hằng số bố cục.

Các vấn đề liên quan