2013-08-22 9 views
8

मुझे यह त्रुटि वाई लॉगकैट में मिलती है। क्या किसी को पता है कि यह क्या है?

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

यह उस वर्ग नहीं मिल रहा। क्या आपके पास उस पुस्तकालय में आपके 'libs' फ़ोल्डर में है? –

+0

हां, मेरे पास लाइब्रेरी में सर्च व्यू क्लास है, मैंने एंड्रॉइड-सपोर्ट-वी 7-एपकोपेट लाइब्रेरी को एक्शनबियर प्री एपीआई 11 – Bombolo

+0

जोड़ने के लिए आयात किया है क्या आपने समर्थन लाइब्रेरी v7 जोड़ा था? – Azrael94

उत्तर

11

वहाँ कोड का एक बहुत यहाँ से दूर जाने के लिए नहीं है, लेकिन मैं अपने आप को इस स्थिति में पड़ गए और यहाँ मुझे क्या हुआ है:

मैं करने के लिए v7 compat पुस्तकालय उपयोग कर रहा था एंड्रॉइड 2 पर एक एक्शनबार है मैं खोज इंटरफ़ेस सामग्री को कार्यान्वित कर रहा हूं। (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())); 

बुरा कोड

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; 
    } 
}); 

बुनियादी सेटअप कोड दुर्भाग्य से यहां समस्या यह है कि हम एक विधि है कि केवल इसलिए हम v14 में समर्थित है बुला रहे हैं है एक "अजीब" रन-टाइम त्रुटि प्राप्त करें जब यह कुछ वर्गों को लोड करने का प्रयास करता है जो पूरी तरह से उपयोग किए जाते हैं। यह एक बहुत अच्छा स्पष्टीकरण नहीं है, लेकिन मूल रूप से यही कारण है कि हमें getActionBar() के बजाय getSupportActionBar() का उपयोग करने की आवश्यकता है।

अच्छा कोड

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

मुझे बात करना चाहिए, मैं एंड्रॉइड स्टूडियो (और इंटेलिजे) का उपयोग कर रहा हूं और यह मुझे इस पर संकलन त्रुटियां देता है ... लेकिन यह काम करता है और चलता है और ठीक है ... मैंने एंड्रॉइडस्ट के साथ एक बग दायर किया है udio: https://code.google.com/p/android/issues/detail?id=59692&thanks=59692&ts=1378237307 – xbakesx

5

आप लॉग 'वर्ग android.support.v7.widget.SearchView नहीं मिल सका से निम्न त्रुटि दूर करने के लिए सुनिश्चित करने के लिए आप ग्रहण में Android समर्थन लाइब्रेरी सही ढंग से जोड़ने की जरूरत विधि 5 से संदर्भित है android.support.v7.widget.SearchView.addOnLayoutChangeListenerToDropDownAnchorSDK11 '।

याद करने के लिए महत्वपूर्ण बात यह है कि, अचिह्नित एंड्रॉयड निर्भरता जब समर्थन लाइब्रेरी जोड़ने क्योंकि v7 appcompat पुस्तकालय संसाधन उपलब्ध हैं करने के लिए मत भूलना। अपनी समर्थन लाइब्रेरी प्रोजेक्ट में अपनी निर्भरताओं में परिवर्तन करने के बाद, समर्थन लाइब्रेरी प्रोजेक्ट को साफ़ करें और यही वह है।

संसाधनों के साथ समर्थन पुस्तकालयों को जोड़ने के तरीके पर आधिकारिक Google डॉको की धारा Adding Libraries with Resources में पूर्ण प्रक्रिया का संदर्भ लें। भविष्य में मामला लिंक परिवर्तन में ऊपर संदर्भित doco से

अंश:

  1. सुनिश्चित करें कि आप एसडीके प्रबंधक का उपयोग कर Android समर्थन लाइब्रेरी डाउनलोड किया है सुनिश्चित करें।
  2. एक पुस्तकालय परियोजना बनाएँ और आवश्यक जार फ़ाइलों परियोजना के निर्माण पथ में शामिल हैं सुनिश्चित:
    • फ़ाइल> आयात।
    • वर्कस्पेस में मौजूदा एंड्रॉइड कोड का चयन करें और अगला क्लिक करें।
    • एसडीके स्थापना निर्देशिका में ब्राउज़ करें और फिर समर्थन लाइब्रेरी फ़ोल्डर में ब्राउज़ करें। उदाहरण के लिए, यदि आप एपकोपेट प्रोजेक्ट जोड़ रहे हैं, तो/extras/android/support/v7/appcompat/ब्राउज़ करें।
    • परियोजना आयात करने के लिए समाप्त क्लिक करें। V7 एपकोपेट प्रोजेक्ट के लिए, आप अब एंड्रॉइड-सपोर्ट-वी 7-एपकोपेट शीर्षक वाली एक नई परियोजना को देखना चाहिए।
    • नई लाइब्रेरी प्रोजेक्ट में, libs/फ़ोल्डर का विस्तार करें, प्रत्येक .jar फ़ाइल पर राइट-क्लिक करें और बिल्ड पथ> बिल्ड पथ में जोड़ें चुनें। उदाहरण के लिए, v7 एपकोपेट प्रोजेक्ट बनाते समय, एंड्रॉइड-सपोर्ट-v4.jar और android-support-v7-appcompat.jar फ़ाइलों को बिल्ड पथ में जोड़ें।
    • प्रोजेक्ट पर राइट-क्लिक करें और बिल्ड पथ> बिल्ड पथ कॉन्फ़िगर करें का चयन करें। ऑर्डर और निर्यात टैब में, .jar फ़ाइलों को चेक करें जिन्हें आपने अभी बिल्ड पथ में जोड़ा है, इसलिए वे इस लाइब्रेरी प्रोजेक्ट पर निर्भर परियोजनाओं के लिए उपलब्ध हैं। उदाहरण के लिए, एपकोम्पेट प्रोजेक्ट के लिए आपको एंड्रॉइड-सपोर्ट-v4.jar और android-support-v7-appcompat.jar फ़ाइलों को निर्यात करने की आवश्यकता होती है।
    • एंड्रॉइड निर्भरता अनचेक करें।
    • परिवर्तनों को पूरा करने के लिए ठीक क्लिक करें।
0

आप परियोजना के लिए समर्थन लाइब्रेरी लापता जोड़ने की जरूरत है। ग्रहण में: राइट क्लिक करें परियोजना

पर

करें Android उपकरण/सहायता लाइब्रेरी जोड़ें ...

संबंधित मुद्दे