2012-05-02 10 views
11

का उपयोग करने के बाद एक्शन बार रीसेट करें मैं अपने ऐप में खोज सक्षम करने के लिए SearchView विजेट का उपयोग कर रहा हूं। खोज आइकन पर प्रारंभिक क्लिक के बाद, SearchView विजेट खोज क्षेत्र में फैला हुआ है और "बैक" तीर एप्लिकेशन आइकन के बगल में दिखाया गया है। यदि मैं एप्लिकेशन आइकन पर क्लिक करता हूं तो एक्शन बार प्रारंभिक स्थिति (कोई "बैक" तीर) पर वापस नहीं आता है और SearchView आइकन पर वापस आ जाता है।SearchView

अब समस्या: खोज निष्पादित होने के बाद कार्रवाई बार नहीं बदलता है, वापस करने का एकमात्र तरीका एप्लिकेशन आइकन या फ़ोन के "बैक" तीर पर क्लिक करना है। अच्छा नहीं है क्योंकि मैं चाहता हूं कि कार्रवाई बार प्रारंभ होने पर प्रारंभिक स्थिति में जाए। मैं SearchView.setIconofied(true) की कोशिश की लेकिन वहाँ 2 समस्याएं हैं:

  1. खोजें आइकन संपादित क्षेत्र के रूप में उसी जगह पर दिखाई देता है (मूल रूप से इस पर अब तक सही है)।
  2. एक्शन बार अभी भी "बैक" तीर प्रदर्शित करता है।

मुझे लगता है कि समस्या मुझे नियमित नेविगेशन पैटर्न से विचलन से परिणाम का सामना कर रही है। मेरे मामले में सब कुछ एक ही गतिविधि के अंदर हो रहा है (खोज परिणाम उसी गतिविधि में प्रदर्शित होते हैं जो एक्शन बार होस्ट करता है), उदाहरण के लिए Activity.finish() निष्पादित करने से बस ऐप से बाहर निकलता है।

मैं एक्शन बार के "एक कदम वापस जाने" कैसे ट्रिगर करूं? या एप्लिकेशन आइकन पर क्लिक अनुकरण करें?

उत्तर

35

ऐसा लगता है जैसे आपने इसे मेनूइटम पर एक संक्षिप्त क्रिया दृश्य के रूप में सेट अप किया है। आप उस मेनूइटम उदाहरण पर collapseActionView() पर कॉल कर सकते हैं ताकि उसे वापस बंद स्थिति में भेज दिया जा सके।

+0

काश मैं एक बार की तुलना में इस अधिक वोट दें सकता था मेरे समाधान है। – dm78

1

विधि collapseActionView() केवल आप एंड्रॉयड के पुराने संस्करणों के लिए समर्थन करने के लिए तो आप MenuItemCompat पुस्तकालय का उपयोग करना चाहिए देख रहे हैं, एपीआई स्तर 14 से काम करता है।

यहाँ SearchView पतन के लिए और कार्रवाई बार पुनर्स्थापित करने के लिए ...

private MenuItem searchMenuItem; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    getMenuInflater().inflate(R.menu.main_menu, menu); 
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    searchMenuItem = menu.findItem(R.id.action_search); 
    final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem); 
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
    searchView.setIconifiedByDefault(false); 

    customizeSearchView(searchView); 

    return super.onCreateOptionsMenu(menu); 
} 




    @Override 
protected void onNewIntent(Intent intent) 
{ 
    setIntent(intent); 

    if (searchMenuItem != null) 
    { 
     if (MenuItemCompat.expandActionView(searchMenuItem)) 
     { 
      MenuItemCompat.collapseActionView(searchMenuItem); 
     } 
     else if (MenuItemCompat.collapseActionView(searchMenuItem)) 
     { 
      MenuItemCompat.expandActionView(searchMenuItem); 
     } 
    } 

    handleIntent(intent); 
} 
संबंधित मुद्दे