2013-08-22 40 views
8

Tôi gặp lỗi này trong y Logcat. Có ai biết nó là gì không?

08-22 19:02:57.830: E/dalvikvm(660): Could not find class 'android.support.v7.widget.SearchView$5', referenced from method android.support.v7.widget.SearchView.addOnLayoutChangeListenerToDropDownAnchorSDK11 
+0

không thể tìm thấy lớp đó. Bạn có thư viện đó trong thư mục 'libs' của bạn? –

+0

Có, tôi có lớp SearchView trong thư viện, tôi đã nhập thư viện android-support-v7-appcompat để thêm actionbare pre API 11 – Bombolo

+0

Bạn đã thêm thư viện hỗ trợ v7 chưa? – Azrael94

Trả lời

11

Không có nhiều mã để đi off đây, nhưng tôi chạy vào tình huống này bản thân mình và đây là những gì xảy ra với tôi:

Tôi đã sử dụng thư viện compat v7 để có một ActionBar trên Android 2 Tôi đang triển khai giao diện tìm kiếm.

cài đặt cơ bản Mã (trong onCreateOptionsMenu())

SearchManager searchManager = 
     (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE); 
SupportMenuItem searchMenuItem = ((SupportMenuItem) menu.findItem(R.id.menu_search)); 
SearchView searchView = (SearchView) searchMenuItem.getActionView(); 
searchView.setSearchableInfo(searchManager.getSearchableInfo(activity.getComponentName())); 

Bad Mã

searchMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener() { 
    @Override 
    public boolean onMenuItemActionExpand(MenuItem item) { 
     // on search expand stuff 
     return true; 
    } 

    @Override 
    public boolean onMenuItemActionCollapse(MenuItem item) { 
     // on search collapse stuff 
     return true; 
    } 
}); 

Thật không may là vấn đề ở đây là chúng ta đang kêu gọi một phương pháp mà chỉ được hỗ trợ trong v14 vì vậy chúng tôi gặp lỗi thời gian chạy "lạ" khi thử tải một số lớp được sử dụng ngầm. Đó không phải là một lời giải thích rất tốt, nhưng về cơ bản đó là lý do tương tự chúng ta cần sử dụng getSupportActionBar() thay vì getActionBar().

Tốt Mã

searchMenuItem.setSupportOnActionExpandListener(new MenuItemCompat.OnActionExpandListener() { 
    @Override 
    public boolean onMenuItemActionExpand(MenuItem item) { 
     // do work 
     return true; 
    } 

    @Override 
    public boolean onMenuItemActionCollapse(MenuItem item) { 
     // do work 
     return true; 
    } 
}); 
+0

Về điều tôi nên đề cập đến, tôi đang sử dụng Android Studio (và IntelliJ) và nó mang lại cho tôi biên dịch lỗi về điều này ... nhưng nó hoạt động và chạy và chỉ là tốt ... Tôi đã gửi một lỗi với AndroidSt udio: https://code.google.com/p/android/issues/detail?id=59692&thanks=59692&ts=1378237307 – xbakesx

5

Bạn cần phải đảm bảo bạn thêm thư viện hỗ trợ Android một cách chính xác trong Eclipse để loại bỏ các lỗi sau từ nhật ký 'Không thể tìm lớp android.support.v7.widget.SearchView $ 5 được tham chiếu từ phương thức android.support.v7.widget.SearchView.addOnLayoutChangeListenerToDropDownAnchorSDK11 '.

Điều quan trọng cần nhớ, đừng quên Dependencies Android bỏ chọn khi thêm thư viện hỗ trợ vì v7 appcompat thư viện có nguồn tài nguyên. Sau khi thực hiện thay đổi cho các phụ thuộc của bạn trong dự án thư viện hỗ trợ của bạn, hãy làm sạch dự án thư viện hỗ trợ và đó là nó.

Tham khảo quy trình hoàn chỉnh trong phần Adding Libraries with Resources doco chính thức của Google về cách thêm thư viện hỗ trợ với tài nguyên.

Trích từ doco tham chiếu nêu trên trong trường hợp thay đổi liên kết trong tương lai:

  1. Hãy chắc chắn rằng bạn đã tải về các thư viện hỗ trợ Android sử dụng Manager SDK.
  2. Tạo dự án thư viện và đảm bảo các tệp JAR bắt buộc được bao gồm trong đường dẫn xây dựng của dự án:
    • Chọn Tệp> Nhập.
    • Chọn Mã Android hiện tại vào vùng làm việc và nhấp vào Tiếp theo.
    • Duyệt đến thư mục cài đặt SDK và sau đó đến thư mục Hỗ trợ Thư viện. Ví dụ: nếu bạn đang thêm dự án ứng dụng , hãy duyệt đến/extras/android/support/v7/appcompat /.
    • Nhấp vào Hoàn tất để nhập dự án. Đối với dự án appcompat v7, bạn bây giờ sẽ thấy một dự án mới có tên android-support-v7-appcompat.
    • Trong dự án thư viện mới, mở rộng thư mục/libs, nhấp chuột phải vào từng tệp .jar và chọn Đường dẫn xây dựng> Thêm vào đường dẫn xây dựng. Ví dụ: khi tạo dự án appcompat v7, thêm cả tệp android-support-v4.jar và android-support-v7-appcompat.jar vào đường dẫn xây dựng.
    • Nhấp chuột phải vào dự án và chọn Tạo đường dẫn> Định cấu hình đường dẫn xây dựng. Trong tab Order and Export, kiểm tra các tệp .jar mà bạn vừa thêm vào đường dẫn xây dựng, do đó chúng có sẵn cho các dự án phụ thuộc vào dự án thư viện này. Ví dụ, dự án appcompat yêu cầu bạn xuất cả tệp android-support-v4.jar và android-support-v7-appcompat.jar.
    • Bỏ chọn Phụ thuộc của Android.
    • Nhấp vào OK để hoàn tất các thay đổi.
0

Bạn cần thêm Thư viện hỗ trợ còn thiếu vào Dự án. Trong Eclipse: Nhấp chuột phải tại Project

Chọn công cụ Android/Thêm thư viện hỗ trợ ...

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