Tôi đã sử dụng phương thức setId
của lớp View
. Theo phương pháp nàyChú thích Android Hoạt động của @IdRes
public void setId(@IdRes int id) // This will accept resource id
Khi tôi cố gắng sử dụng phương pháp này với một số giá trị hardcoded int
(hãy nói 100), sau đó phương pháp này bắt đầu ném cảnh báo đúng được expected-
actionButton.setId(100);
dự kiến tài nguyên của id loại.
Nhưng khi tôi chuyển đổi giá trị hardcoded này thành một phương pháp và không bao giờ được xác định rằng phương thức này sẽ trả về @IdRes
, Cảnh báo sẽ im lặng.
private int getViewId() {
return 100;
}
Gọi để đặt Id.
actionButton.setId(getViewId());
Cả hai đều không giống nhau. Đã mã hóa int
và int
trả về từ phương pháp này. Vì vậy, tại sao trong một trường hợp phương pháp ném cảnh báo và trong một khác nó được im lặng.
Vì lợi ích tôi đã thử với StringRes
nhưng tôi nhận được cảnh báo trong cả hai trường hợp.
private void setMyString(@StringRes int resourceString) {}
Cảnh báo ở cả hai bên dưới cases-
setMyString(1);
setMyString(getStringId()); getStringId returns int value
Tôi nghĩ chú thích @IdRes buộc bạn sử dụng id tài nguyên thay vì int. Có thể gán id tài nguyên cho biến số – Inducesmile
Có Tôi đồng ý @Inducesmile nhưng trong trường hợp StringRes, nó không bao giờ ném cảnh báo trong cả hai trường hợp – Rahul
Bạn có chạy lint hoặc sử dụng trình phân tích luồng dữ liệu tích hợp của Android Studio (IntelliJ IDEA) không? – laalto