2014-10-25 11 views
16
का उपयोग कर SearchView

मैं appcompat.v7 उपयोग करने से पहले Actionbar में SearchView लागू किया लेकिन जब मैं समर्थन पुस्तकालय के साथ SearchView उपयोग करना चाहते हैं v7 यह शून्य अपवादAppCompat

से पता चलता शैली में

<item android:id="@+id/action_search" 
    android:title="@string/action_search" 
    android:icon="@drawable/ic_action_search" 
    app:showAsAction="always|collapseActionView" 
    android:actionViewClass="android.support.v7.widget.SearchView" /> 

जावा कक्षा में:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu, menu); 
    SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); 
    searchView.setOnQueryTextListener(this); 
    return super.onCreateOptionsMenu(menu); 
} 

मेरा प्रश्न onCreateOptionsMenu में SearchView घोषित करने के लिए कैसे क्वेरी श्रोता सेट करने के लिए सक्षम होने के लिए है?

+3

एस्पेन रिस्कडल ने कहा: "एंड्रॉइड बदलें: एक्शन व्यू क्लास ऐप: एक्शन व्यू क्लास" भी महत्वपूर्ण है। – gio

उत्तर

24

आपको MenuItemCompat में स्थिर विधियों का उपयोग करना चाहिए सभी AppCompat मेनू आइटम से निपटें। '12 एकीकरण 'के तहत अंतिम आइटम के रूप में this blog post में इसका उल्लेख किया गया था। बस निम्नलिखित के साथ अपने SearchView घोषणा को प्रतिस्थापित करें।

SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search)); 

यहां MenuItemCompat दस्तावेज़ों का एक लिंक है।

संपादित करें: मैं बस आप नए Toolbar विजेट के लिए समर्थन के साथ AppCompat के नवीनतम संस्करण का उपयोग कर रहे ग्रहण किया।

+0

यह एक काम करता है धन्यवाद :) – A7madev

+1

आप इसे 'SearchView' पर 'setOnSearchClickListener' विधि' के साथ कर सकते हैं। http://developer.android.com/reference/android/support/v7/widget/SearchView.html – ebarrenechea

23

यदि आप android:actionViewClass से app:actionViewClass बदलते हैं तो आपका मौजूदा कोड काम करना जारी रखेगा।

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