2012-02-07 24 views
6

Sau khi cuối cùng nhận được Android Facebook SDK để nhập đúng nhờ this, tôi thấy nhật thực mà không nhận ra ghi đè onclick trong FbDialog.java:nguồn Facebook Android SDK sẽ không biên dịch với Eclipse Indigo

mCrossImage.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     mListener.onCancel(); 
     FbDialog.this.dismiss(); 
    } 
}); 

nó cũng không nhận ra ghi đè của onServiceConnected và onServiceDisconnected trong việc thực hiện TokenRefreshServiceConnection của ServiceConnection

@Override 
public void onServiceConnected(ComponentName className, IBinder service) { 
    messageSender = new Messenger(service); 
    refreshToken(); 
} 

@Override 
public void onServiceDisconnected(ComponentName arg) { 
    serviceListener.onError(new Error("Service disconnected")); 
    // We returned an error so there's no point in 
    // keeping the binding open. 
    mAuthActivity.unbindService(TokenRefreshServiceConnection.this); 
} 

cả ba phương pháp nói, trong cảnh báo, rằng phương pháp này phải ghi đè lên một su phương thức lớp. Tôi chưa sửa đổi mã. Tôi đã kiểm tra xem Eclipse có nhận ra các kiểu giống như các siêu lớp trong các lớp tương ứng hay không, và tôi đã thử nhấn control-shift-o để tổ chức nhập khẩu, một sửa lỗi được đề xuất trong this answer cho một vấn đề tương tự.

Các ghi đè này là một phần của SDK chứ không phải bất kỳ dự án riêng biệt nào. Tôi đã thiết lập dự án để sử dụng Android SDK 2.2 như được hiển thị trên hướng dẫn của Facebook và 4.0.3, về mặt lý thuyết, tương thích với tất cả các phiên bản trước. Tôi chưa nhận được mã riêng của Facebook để làm việc. Là một lưu ý phụ, có một cái bình tôi có thể sử dụng thay thế? Nó sẽ làm cho việc này dễ dàng hơn nhiều.

Trả lời

15

Đoán thuộc tính dự án của bạn -> Mức tuân thủ Trình biên dịch Java Compiler được đặt thành 1,5, chứ không phải 1,6 (hoặc cao hơn).

Thay đổi điều này.

Why is javac failing on @Override annotation

+0

Ồ, tôi nghĩ rằng tôi đã có nó trên 1,6/1,7. Đây là vấn đề tôi đã gặp phải. Cảm ơn bạn! – Poik

2

Bản sửa lỗi lười biếng, nhanh chóng và dễ dàng là xóa chú thích @Override. Sửa lỗi chính xác là kiểm tra xem dự án có biên dịch Java 1.5 hay cao hơn không, để sử dụng "sửa các thuộc tính dự án" từ Eclipse, và có thể kiểm tra dự án thư viện Facebook sử dụng cùng một SDK Android để biên dịch, như dự án của bạn.

+0

Tôi đã làm điều đó tại một thời điểm nhưng chỉ thực hiện để có thể biên dịch, không chạy. Tuy nhiên, tôi sẽ chỉnh sửa bài đăng của mình, vì vậy tôi có thể đề cập đến việc tôi không thể tự mình lấy được SDK Android của Android để biên dịch chứ không phải dự án của tôi. Và tôi đã thử sử dụng các SDK khác nhau (Cụ thể, cả 2.2 và phiên bản mới nhất nên tương thích với tất cả các lý thuyết trước đây), không có gì hoạt động. – Poik

+0

bạn đã kiểm tra chế độ xem 'Vấn đề' từ Eclipse chưa? Nó không được hiển thị theo mặc định ở Indigo và thường chứa tất cả thông tin bạn cần – zrgiu

+0

Điều đó thực sự đã nói với tôi rằng không có gì mà tôi chưa thấy trong mã. "Phương thức onClick (View) của loại View.OnClickListener() {} mới phải ghi đè lên một phương thức superclass", "Phương thức onServiceConnected (ComponentName, IBinder) của kiểu Facebook.TokenRefreshServiceConnection phải ghi đè lên một phương thức superclass", và "Phương thức onServiceDisconnected (ComponentName) của loại Facebook.TokenRefreshServiceConnection phải ghi đè lên một phương thức siêu lớp ". – Poik

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