Khi tạo một giao diện tùy chỉnh, tôi đã nhận thấy rằng nhiều người dường như để làm điều đó như thế này:Tôi có nên gọi super() hoặc gọi phương thức này() cho các nhà xây dựng chế độ xem tùy chỉnh của Android không?
public MyView(Context context) {
super(context);
// this constructor used when programmatically creating view
doAdditionalConstructorWork();
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
// this constructor used when creating view through XML
doAdditionalConstructorWork();
}
private void doAdditionalConstructorWork() {
// init variables etc.
}
Vấn đề của tôi với điều này là nó dừng lại cho tôi từ việc biến tôi thức. Bất kỳ lý do nào không làm những điều sau đây?
public MyView(Context context) {
this(context, null);
// this constructor used when programmatically creating view
}
public MyView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
// this constructor used when creating view through XML
}
public MyView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// this constructor used where?
// init variables
}
Tôi đã có thể tạo chế độ xem tốt qua XML và thông qua mã, nhưng tôi không chắc chắn có bất kỳ hạn chế nào đối với phương pháp này hay không. Điều này sẽ làm việc trong mọi trường hợp?
Có another part to this question
Gọi 'this' chỉ gọi một hàm tạo khác của lớp hiện tại. Tôi nghĩ rằng đây là một cái gì đó bạn đã không nhận ra. Như vậy 'this (context, null);' gọi 'public MyView (bối cảnh bối cảnh, AttributeSet attrs) {' mà lần lượt gọi 'publicView (ngữ cảnh bối cảnh, AttributeSet attrs, int defStyle) {'. Lời gọi hàm tạo này không phải là rất phổ biến trong ngôn ngữ java, nhưng tôi thấy không có lý do gì sẽ không hoạt động. –
Tôi nhận ra rằng, tôi chỉ quan tâm đến các tham số. :) –