वहाँ कोड का एक बहुत यहाँ से दूर जाने के लिए नहीं है, लेकिन मैं अपने आप को इस स्थिति में पड़ गए और यहाँ मुझे क्या हुआ है:
मैं करने के लिए 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;
}
});
यह उस वर्ग नहीं मिल रहा। क्या आपके पास उस पुस्तकालय में आपके 'libs' फ़ोल्डर में है? –
हां, मेरे पास लाइब्रेरी में सर्च व्यू क्लास है, मैंने एंड्रॉइड-सपोर्ट-वी 7-एपकोपेट लाइब्रेरी को एक्शनबियर प्री एपीआई 11 – Bombolo
जोड़ने के लिए आयात किया है क्या आपने समर्थन लाइब्रेरी v7 जोड़ा था? – Azrael94