2010-09-15 41 views
17

Tôi đang tìm cách giảm những gì tôi gọi là "ô nhiễm id" trong ứng dụng của mình. Từ những gì tôi có thể nói, R.id là toàn cầu đối với ứng dụng, vì vậy trong mỗi Hoạt động, tôi thường tạo các giá trị id tài nguyên duy nhất cho các phần tử, ngay cả khi tôi có nhiều thứ giống nhau. Ví dụ, nếu tôi có ba lớp Hoạt động, mỗi một tiết kiệm và hủy nút, tôi sẽ xác định sáu độc đáo của id cho R.id như:Phạm vi giá trị R.id

R.id.actOne_save 
R.id.actOne_cancel 
R.id.actTwo_save 
R.id.actTwo_cancel 
R.id.actThree_save 
R.id.actThree_cancel 

Điều này có vẻ không cần thiết với tôi, như tôi nên thực sự chỉ cần hai chạy trên bất kỳ Hoạt động nào. Một số thực tiễn mà bạn sử dụng khi tạo id tài nguyên là gì? Bạn có sử dụng lại chúng giữa các hoạt động? Đó có phải là OK nếu một id tồn tại trên hai Activites (có thể một trong những bị tạm dừng và một foreground) cùng một lúc? Tôi sợ hành vi kỳ quặc như một nút bấm nhấn quá nhiều người nghe!

Trả lời

20

Bạn có thể sử dụng cùng một id trên nhiều phần tử, miễn là chúng không ở trong cùng một chế độ xem. Vì vậy, tất cả các nút lưu của bạn có thể có id là btn_save và miễn là không có hai trong số chúng trong cùng một tệp bố cục hoặc bố cục được đính kèm, thì bạn vẫn ổn.

+2

Cảm ơn, điều đó có ý nghĩa khi findViewById() được gọi từ một Hoạt động hoặc Chế độ xem, thay vì Ứng dụng. Chúc mừng! – Devunwired

+1

Điều này chỉ đúng 50% vào lúc này bởi vì bạn có thể thấy trong trình soạn thảo R. từ các hoạt động ở nước ngoài, do đó bạn có thể nghĩ rằng một trong số đó là của bạn ngay cả khi nó không tồn tại trong hoạt động của bạn. – user250343

+0

@Martyn, ý bạn chính xác là gì "trong cùng một chế độ xem"? Nếu tôi có bố cục hoạt động bao gồm 2 bố cục phân đoạn, mỗi đoạn bao gồm một 'id =" @ + id/button_ok ", đây có phải là vấn đề vì chúng chia sẻ cùng một chế độ xem gốc không? – bcorso

4

tôi sử dụng:

R.id.activityName_type_action

trong đó type có thể [btn | txtview | EditText | listview ...]

và hành động là một cái gì đó giống như [lưu | del | accept | name | pin ...]

Khá dài, nhưng theo cách này tôi có thể đoán tên nhận dạng từ hoạt động mà không phải liên tục kiểm tra bố cục xml.

Ví dụ:

R.id.loginpin_btn_accept

R.id.loginpin_txtview_pin

1

Những câu trả lời khác sẽ làm việc, nhưng bạn cũng có thể làm cho một save_button.xml trong thư mục bố trí của bạn, với <Button> làm thẻ gốc. Sau đó tham khảo id của anh chàng đó ở những nơi bạn cần. Điều này có nghĩa là bạn chỉ cần xác định một nút "lưu" và sử dụng nó ở mọi nơi.

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