2015-09-21 7 views
9

मेरी वर्तमान एंड्रॉइड प्रोजेक्ट में मैं Butterknife लाइब्रेरी का उपयोग बाइंड विचारों के लिए करता हूं और onClick उनके लिए एनोटेशन का उपयोग करता हूं। यह सब टुकड़े में भी अच्छा काम करता है लेकिन अब मैं बिंदु जहां मैं एक समाधान नहीं मिल सकता है पर हूँ:Butterknife मेनू से खोज दृश्य देखें

मैं नए ToolBarActionBar के रूप में इस्तेमाल करते हैं और उस में एक SearchView के साथ एक मेनू बढ़ा देते हैं। इस SearchView के लिए मैं @OnTextChanged एनोटेशन का उपयोग करना चाहते लेकिन जब मैं मेनू आइटम की ActionView साथ बाँध विधि कॉल ButterknifeActionView में फिर से और निश्चित रूप से सभी दृश्य reinstanciate यह नहीं मिल रहा RootLayout के किसी भी अन्य दृश्य की कोशिश करता है।

तो वहाँ केवल एक ViewButterknife साथ जोड़ने के लिए एक रास्ता है या मैं जो मेरे RootLayout और ToolBarView से सभी दृश्य शामिल हैं तो मैं बाँध विधि को यह देखें पारित कर सकते हैं एक दृश्य मिल सकता है? उदाहरण के लिए सक्रियताओं में मैं मेनू आईडी के लिए findViewById भी कॉल कर सकता हूं लेकिन अगर मैं अपने Fragment से getView() का उपयोग करता हूं तो यह काम नहीं करता है। इसके लिए कोई विचार?

+0

एक विशेषता यह ऐसा करने के लिए अनुरोध किया गया था, लेकिन यह जेक व्हार्टन द्वारा अस्वीकार कर दिया गया था। कृपया समस्या देखें [# 41] (https://github.com/JakeWharton/butterknife/issues/41) और [# 416] (https://github.com/JakeWharton/butterknife/issues/416) और कहा ** मैं इसे केवल दृश्य-वास्तविक चीज़ों के साथ सहायता करने पर केंद्रित रखना चाहता हूं। ** – Sufian

उत्तर

7

मुझे लगता है कि यह खोज संभव नहीं है क्योंकि SearchView एक मेनू आइटम है। मेनू घोषणा में आप जिस आईडी का उपयोग कर रहे हैं वह मेनू के भीतर इस दृश्य को पहचानता है, गतिविधि के दृश्य नहीं, शायद यही कारण है कि बटरनाइफ इसे बांधने में सक्षम नहीं है।

मुझे डर है कि आप क्या करना होगा हूँ:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.bookings_list_menu, menu); 
    SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); 

    searchView.setOnSearchClickListener(...); 
    searchView.setOnCloseListener(...); 
    searchView.setOnQueryTextListener(...); 

    super.onCreateOptionsMenu(menu, inflater); 
} 
संबंधित मुद्दे