2012-07-20 46 views
13

Tôi không chắc chắn nếu có ai bị lỗi với vấn đề này trước đây, nhưng đó là một nỗi đau lớn đối với tôi.Phương pháp hay nhất để đặt tên cho id của phần tử XML trong Android là gì?

Làm thế nào để bạn đưa id vào phần tử xml trong android?

Hiện tại, tôi đã đặt id với mẫu [tên hoạt động/phân đoạn] [loại phần tử] [tên cụ thể]. Ví dụ, nếu tôi có một EditText để giữ một email được sử dụng trong LoginActivity, tôi sẽ cung cấp cho id 'LoginEditTextEmail'.

Vấn đề tôi đang gặp phải, với cách tiếp cận này, id thường kết thúc trong một thời gian rất dài.

Làm cách nào để bạn đặt id? Thực hành tốt nhất là gì?

Trả lời

5

Bạn đang làm quá nhiều thứ. Chỉ cần đặt tên nó theo bất kỳ cách nào là đáng nhớ cho bạn. ID chỉ phải là duy nhất cho mỗi XML (nghĩa là bạn có thể có 50 bố cục khác nhau với id là my_edittext) vì bạn chỉ thấy chế độ xem theo ID của nó thông qua một hệ thống phân cấp chế độ xem duy nhất.

+0

Ah, tôi hiểu. Cảm ơn @kcoppock, nếu id là cần thiết để được duy nhất chỉ trong một hệ thống phân cấp khung nhìn duy nhất, sau đó nó là rõ ràng để lại khối khác ra. ; D –

+0

@kcoppock, nó có trở thành một vấn đề cho các mảnh anh chị em, hay các mảnh ghép lồng nhau không? – bcorso

+0

Có thể là nếu bạn đang tìm kiếm các lượt xem phân đoạn từ hoạt động này, nhưng nếu bạn đang thực hiện tất cả thao tác xem trong đoạn (thông thường bạn nên) thì đó không phải là vấn đề. – kcoppock

1

Giống như đặt tên bất kỳ thứ gì, tôi có xu hướng sử dụng tên ngắn nhất có thể mô tả chính xác nó. Trong trường hợp id cho bố cục, chỉ cần đảm bảo mỗi id là duy nhất trong bố cục của bạn (bạn có thể sử dụng lại cùng một id trong một bố cục khác).

12

Tên mô tả là lý tưởng (giống như tên với bất kỳ biến nào trong bất kỳ ngôn ngữ lập trình nào).

Tôi nghĩ rằng bạn có một hệ thống tốt đã tôi sẽ cung cấp những cách tiềm năng để giảm kích thước của các ID của bạn

[hoạt động tên mảnh /] - Cá nhân tôi sẽ thả này, tôi có xu hướng sử dụng một cách bố trí tập tin cho mỗi hoạt động/phân đoạn dù sao đi nữa cũng không gây nhầm lẫn về hoạt động của khung nhìn. Cũng có những lúc tôi sử dụng lại một số tiện ích Xem trong nhiều hoạt động và tôi sẽ để chúng với cùng một ID để mã tìm và tương tác chúng được đơn giản hóa (tức là nó có thể được sao chép/dán hoặc đưa vào một phân lớp của Hoạt động)

[loại phần tử] - Tôi sử dụng một cách viết tắt 3 lá thư cho các loại phụ tùng:

  • Edt = EditText
  • Txt = TextView
  • LBL = TextView đó là tĩnh cho nhãn một cái gì đó
  • btn = Nút
  • Prg = ProgressBar
  • Lyt = Layout
  • vv ...

[tên cụ thể] - không có cải tiến thực sự được thực hiện ở đây, nó phải được miễn là nó phải được mô tả những gì nó được cho.

+1

Cảm ơn @Tim, nếu tôi có thể để lại tên hoạt động/phân đoạn thì tốt nhất. Tôi nói thêm rằng về cơ bản vì tôi không hiểu thủ tục tra cứu id đủ tốt. –

+1

bạn chắc chắn có thể để nó trong =), tôi chỉ cá nhân có xu hướng không sử dụng điều đó. – FoamyGuy

0

Thả mảnh, hoạt động và loại trừ khi bạn đủ điều kiện này trong mã hóa, vì vậy:

boolean isLoggedIn = false;

android:id="@+id/is_logged_in"

Như đã đề cập trong câu trả lời khác XML cung cấp các vòng loại, bây giờ bạn phải quyết định xem sự nhất quán và/hoặc trình độ chuyên môn hơn là cần thiết và nếu nó là trang phục. Bạn có thực sự cần phải đủ điều kiện và nếu bạn không hỗ trợ mã sẽ khó khăn hơn nhiều đối với bạn hoặc bất kỳ ai khác?

Vì vậy, những gì về strings.xml?

tiếp tục tiền tố id bằng trình phân tích dải hoặc hoạt động. Vì vậy, ví dụ:

<string name="profile_is_logged_in_true">Logged in.</string>

<string name="profile_is_logged_in_false">Not logged in.%</string>

Cũng & hellip;

<plurals name="plural_is_logged_in_duration">...

Tôi đã đùa giỡn với:

<string name="profile_isloggedin_false">Not logged in.</string>

Nhưng chưa thuyết phục. Đây thực sự là một vấn đề phân loại, bây giờ kể từ khi được giải quyết trong các ngành khác bằng cách gắn thẻ. Java cung cấp không gian tên rải rác và gõ vòng loại, vì vậy

com.example.android.app.profile.State.isLoggedIn

Android sử dụng những thứ như R.string :-) Vì vậy, bạn có Java cộng với một số không gian tên bổ sung từ Android. Đừng quên bạn có thể có nhiều hơn một tập tin nguồn chuỗi, vì vậy có lẽ:

res/values/widget_defaults.xml

có thể chứa một số giá trị mặc định cho nói một TextView. Các chuỗi đúng và sai phải được xử lý bởi số nhiều - nhưng ví dụ hy vọng sẽ giúp, mặc dù có một chút giả tạo.

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