2011-09-25 37 views
5

Tôi muốn nghe một phím bấm dài trong ứng dụng Android của tôi, và từ Android 2.0 có một phương phápAndroid - Phương pháp ghi đè từ phiên bản API cao hơn và hỗ trợ phiên bản thấp hơn API

public boolean onKeyLongPress(int keyCode, KeyEvent event) 

để ghi đè. Nhưng tôi có thể làm gì nếu ứng dụng của tôi hoàn toàn phải hỗ trợ API 4 (Android 1.6)? Tôi biết rằng tôi có thể gọi các phương thức API với sự phản chiếu, nhưng tôi khá chắc chắn rằng tôi không thể ghi đè với sự phản chiếu.

Trả lời

0

là đơn giản nhất để viết hai triển khai của class view tùy chỉnh của bạn, nói:

MyCustomViewBasic extends View { 
    private MySharedImplementation impl; 
} 

MyCustomViewKeyLongPress extends View { 
    private MySharedImplementation impl; 

    @Override 
    public boolean onKeyLongPress(int keyCode, KeyEvent event) { 
     // Do something exciting 
    } 
} 

Hai triển khai có thể chia sẻ nhiều chi tiết thực hiện càng tốt, trong khi đảm bảo rằng bất cứ điều gì không có sẵn trong mức API 4 không phải là trong quá trình triển khai được chia sẻ.

Sau đó, có hai bố cục xml, một cho API cấp 4 và một cho API cấp 4 trở lên. Sử dụng MyCustomViewBasic trong bố cục cho API cấp 4 và MyCustomViewKeyLongPress trong bố cục cho API cấp 4 trở lên

+0

tiếc là tôi muốn làm điều này cho hoạt động – Axarydax

5

Tại sao bạn không xóa chú thích @Override phía trên phương pháp? Android 1.6 sẽ bỏ qua nó, 2.0 sẽ vẫn giải thích nó một cách chính xác.

+0

ghi đè chức năng không phải là phần khó khăn ... loại sự kiện này yêu cầu sử dụng super.onKeyLongPress() bên trong của nó để xử lý đúng chuỗi các sự kiện. Android <2.0 sẽ choke trên super.onKeyLongPress() vì nó không tồn tại và không có cách nào để gọi super.whatever() với sự phản chiếu trong Java. Tôi đang cố gắng tìm cách để có được cùng một loại điều để làm việc cho API 3 và tôi đang ở một mất mát, quá. –

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