2012-04-12 42 views

Trả lời

8

cách tiếp cận thứ hai là thanh lịch hơn, vì trong nội bộ, các TextView (hoặc bất kỳ View đẳng cấp) sẽ thực hiện công việc nhận được? Chuỗi cho tài nguyên được chỉ định của bạn.

Để các thành phần làm việc nội bộ luôn được ưu tiên. Ngoài ra, nó ngắn hơn và dễ đọc hơn.


Về internals tôi đã nói chuyện về: Nếu bạn có một cái nhìn tại Androids mã nguồn, bạn có thể thấy rằng setText(int) -method của TextViewis implemented like this:

public final void setText(int resid) { 
    setText(getContext().getResources().getText(resid)); 
} 

Vì vậy, nó sử dụng trong nội bộ Context-class để lấy chuỗi từ id tài nguyên. Bây giờ, nếu bạn nhìn vào getText() -method (mà cũng xuất phát từ Context đẳng cấp), bạn có thể thấy rằng nó is implemented the same way:

public final String getString(int resId) { 
    return getResources().getString(resId); 
} 

Vì vậy, cho hiệu suất hoặc độ tin cậy lý do này, nó làm cho không có sự khác biệt. Tuy nhiên, nó ngắn hơn và dễ đọc hơn.

+0

Cảm ơn bạn, hoàn hảo! –

+1

@Shamrflow Tôi cập nhật câu trả lời với một số mã từ nguồn Android để hiển thị, rằng nó được thực hiện theo cùng một cách. Có một cái nhìn. –

+0

Cảm ơn bạn Lukas, thậm chí tốt hơn. Tôi đã nhận thấy nó cũng đúng đối với setTitle và setMessage trong AlertBuilder và một vài lớp khác. Chúc mừng! –

1

Vâng, vì API cung cấp một phương thức để chuyển ID chuỗi tài nguyên, có vẻ hợp lý để thích sử dụng điều này. Bạn thực sự có thể kiểm tra công việc của setText (resourceid) để xem bên dưới mui xe, nhưng setText (R.strings.whatever) chắc chắn được đề nghị.

0

Bạn có thể thêm

yourEditText.setText(getResources().getString(R.string.mytext)); 

bởi vì bạn cần có được bối cảnh tài nguyên, sau khi nhận được chuỗi.

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