13

पर स्विच करने के बाद नेविगेशन आइकन गुम हो गया है मेरे पास कई खंडों के साथ एक गतिविधि है जो एक्शन बार और नेविगेशन ड्रॉवर का उपयोग करती है। इसमें "होम अप" सक्षम है। मैंने उचित तर्क लागू किया है कि केवल शीर्ष स्तर के टुकड़े एक्शन बार ड्रॉवर टॉगल आइकन दिखाते हैं, अन्य टुकड़े तीर दिखाते हैं। मैंने इसे प्राप्त किया:आईसीएस एक्शनबार से लॉलीपॉप टूलबार

mDrawerToggle.setDrawerIndicatorEnabled(false); 
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mDrawerList); 

अब पुरानी v4 समर्थन लाइब्रेरी ActionBarDrawerToggle को बहिष्कृत कर दिया गया। मैं सामग्री डिजाइन देखने के लिए नए Toolbar के साथ v7 संस्करण में एक साथ स्विच कर चुका हूं। उसके बाद जब दराज खुला होता है "ऊपर" तीर सही ढंग से प्रदर्शित होता है, लेकिन जब ऊपर उल्लिखित कोड निष्पादित किया जाता है तो यह पूरी तरह से गायब हो जाता है।

क्या यह समर्थन पुस्तकालय में एक बग है या मुझे दराज संकेतक के बजाय "ऊपर" तीर दिखाने के लिए कुछ अलग करना है?

+0

समर्थन लाइब्रेरी अनुपयोगी, अनियंत्रित और समस्याग्रस्त है क्योंकि यह अभी कर सकता है, मुझे इसके साथ बहुत सारी समस्याएं आ रही हैं। उस ने कहा, एक्शनबैर कॉम्पैक्ट()। DisplayHomeAsUpEnabled() या useLogo | showHome | showTitle<शैली नाम = "एक्शनबार" पैरेंट = "विजेट.एप कॉम्पैक्ट.लाइट.एक्शनबार। समेकित। इन्वर्क्स"> –

उत्तर

10

क्या आपने getV7DrawerToggleDelegate().getThemeUpIndicator() का उपयोग करके संकेतक को अपनाने का प्रयास किया है और इसे संकेतक अक्षम करने के बाद सेट किया है?

क्योंकि जब संकेतक अक्षम होता है ActionBarDrawerToggle पिछले सूचक को सेट करने का प्रयास करता है।

public void setDrawerIndicatorEnabled(boolean enable) { 
    if (enable != mDrawerIndicatorEnabled) { 
     if (enable) { 
      setActionBarUpIndicator((Drawable) mSlider, 
        mDrawerLayout.isDrawerOpen(GravityCompat.START) ? 
          mCloseDrawerContentDescRes : mOpenDrawerContentDescRes); 
     } else { 
      setActionBarUpIndicator(mHomeAsUpIndicator, 0); 
     } 
     mDrawerIndicatorEnabled = enable; 
    } 
} 

संपादित करें::

ActionBarActivity की निंदा के रूप में, आप का उपयोग करना चाहिए getDrawerToggleDelegate().getThemeUpIndicator()

+4

इससे तीर दिखाने में मदद मिली लेकिन 'ऑनऑप्शन इटैम सेलेक्टेड' को टैप करने पर कॉल नहीं किया जाता है। ऐसा लगता है कि समस्या कहीं गहरी है ... –

+3

टूलबार को दोबारा बदलने की कोशिश करें। SetSupportActionBar का उपयोग करना() –

+3

इससे मदद मिली, लेकिन यह मैंने देखा है कि यह सबसे बढ़िया हैक है! –

18

उत्तर/निकोला Despotoski और एंड्री Novikov की टिप्पणी पूरी तरह से सही हैं, लेकिन मैं चाहता हूँ

ActionBarDrawerToggle स्रोत से

यह उल्लेख करने के लिए कि टूलबार को निम्नलिखित कोड के साथ प्रतिस्थापित किया गया था:

drawerToggle.setDrawerIndicatorEnabled(false); 
drawerToggle.setHomeAsUpIndicator(getV7DrawerToggleDelegate().getThemeUpIndicator()); 
setSupportActionBar(toolbar); 

आपकी गतिविधि प्रत्येक ऑनऑप्शन इटम्स चयनित घटनाएं प्राप्त करेगी, भले ही आप अपने दराज को फिर से ड्रॉवर करने के लिए सक्षम करें। DragleToggle.setDrawerIndicatorEnabled (true); तो आप इस संभाल करने की जरूरत है, मैं

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: 
      if (drawerToggle.isDrawerIndicatorEnabled()) { 
       return drawerToggle.onOptionsItemSelected(item); 
      } else { 
       onBackPressed(); 
       return true; 
      } 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 
+0

बिल्कुल सही! आपका बहुत बहुत धन्यवाद! –

+0

बिल्कुल सही उत्तर :) –

+0

यह अब तक काम करता है लेकिन हाल ही में समर्थन lib को v 22.1.0 में अपडेट करना था और हैमबर्गर आइकन का परिवर्तन करना था, लेकिन जब आप पिछली टुकड़े पर वापस आते हैं जहां आप नेविगेशन ड्रॉवर दिखाना चाहते हैं तो हैमबर्गर आइकन दिखाया गया है लेकिन यह अभी भी काम करता है। यानी नौसेना के दराज को नहीं खोलता है। कोई विचार?? – Ravi

2

के साथ समाप्त हो गया है आप AppCompatActivity का उपयोग करते हैं, तो आप सही दराज आइकन और द्वारा

 if(homeUp) 
    { 
     getSupportActionBar().setDisplayHomeAsUpEnabled(false); 
     mDrawerToggle.setDrawerIndicatorEnabled(false); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     mDrawerToggle.setToolbarNavigationClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       onBackPressed(); 
      } 
     }); 

    } 
    else 
    { 
     mDrawerToggle.setDrawerIndicatorEnabled(true); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     mDrawerToggle.syncState(); 
    } 

getV7DrawerToggleDelegate के लिए जरूरत के बिना वापस आइकन प्राप्त कर सकते हैं: डी

+0

धन्यवाद! केवल यह समाधान AppCompat v7 और टुकड़ों की सूची के लिए मेरे मामले में काम करता है – Alex

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