विधि setDrawerListener को पदावनत कर दिया जाता है


226

जब मैं अपने ऐप पर कुछ कर रहा हूं, तो मैं देखता हूं कि मेरे ऐप पर नेविगेशन ड्रावर ने इसका आकार कम कर दिया है। लेकिन मैं उस पर कुछ नहीं कर रहा हूं।

नेविगेशन दराज

फिर, कोड की जाँच करने के बाद, मैंने देखा कि setDrawerListener को पदावनत कर दिया गया है। क्या किसी के पास इसका कोई हल है?

drawerLayout.setDrawerListener(actionBarDrawerToggle);

9
पदावनत कोड का शायद दराज के आकार से कोई लेना-देना नहीं है। इसका मतलब है कि वे भविष्य में इसके लिए समर्थन (विशिष्ट विधि) को हटा देंगे। यह संभवतः एक AddDrawerListener के साथ बदल दिया गया है, लेकिन मुझे इस पर यकीन नहीं है।
chRyNaN

मैं देख रहा हूँ .. लेकिन मुझे कोई समस्या नहीं दिख रही है, मैंने बस एक नया टुकड़ा बनाया है जो उस दराज से जुड़ा नहीं है .. वास्तव में समझ में नहीं आ रहा है कि यह बात क्यों हुई ...
david glorioso

लाइब्रेरी का कौन सा संस्करण आप उपयोग कर रहे हैं?
अमित वाघेला

मैं इस का उपयोग कर रहा हूँ >> संकलन 'com.android.support:appcompat-v7:23.2.0', संकलन 'com.android.support:design:23.2.0', संकलन 'com.android.support:support.v4' : 23.2.0 '
david glorioso

जवाबों:


751

addDrawerListener()इसके बजाय उपयोग करें ।


13
क्यों। बस, क्यों।
ब्रुक

9
वे यह बकवास क्यों करते हैं
एलेक्स वोहलब्रुक

7
एपीआई स्थिरता के लिए। उन्होंने कहा removeDrawerListener()कि add...मैच के लिए नाम दिया गया है
Marcin Orlowski

26
कम से कम वे use 'addDrawerListener' insteadपदावनत संदेश में शामिल हो सकते हैं !
आआ जूल 26'17

1
तो ... क्या हम कई दराज श्रोताओं को जोड़ सकते हैं?
केनी वर्डेन

84

बदलने के:

drawer.setDrawerListener(...);

साथ में

drawer.addDrawerListener(...);

public void setDrawerListener(DrawerLayout.DrawerListener listener) एक श्रोता को दराज की घटनाओं के बारे में सूचित करने के लिए सेट करता है।

ध्यान दें कि यह विधि पदावनत है और आपको addDrawerListener(DrawerLayout.DrawerListener)एक श्रोता को जोड़ने और removeDrawerListener(DrawerLayout.DrawerListener)एक पंजीकृत श्रोता को निकालने के लिए उपयोग करना चाहिए ।


18
हमें दराज के श्रोता को कहां निकालना चाहिए और क्या यह आवश्यक है?
portfoliobuilder

@portfoliobuilder यह निर्भर करता है। आम तौर पर, यह आवश्यक नहीं है। यदि आप इसे सेट करते हैं onCreate()और आप स्क्रीन को घुमाते हैं तो पूरी गतिविधि फिर से बन जाती है और नया श्रोता सेट हो जाता है। अधिक जटिल मामलों को इस सोच के साथ संभाला जाना चाहिए कि (शायद) 1 से अधिक श्रोता को सेट करने की आवश्यकता नहीं है DrawerLayout
जॉनी फाइव

29

बदलने के setDrawerListener

drawerLayout.setDrawerListener(actionBarDrawerToggle);

साथ में addDrawerListener

drawerLayout.addDrawerListener(actionBarDrawerToggle);

उदाहरण

  DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                    this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
            assert drawer != null;
            drawer.addDrawerListener(toggle);
            toggle.syncState();

            NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
            assert navigationView != null;
            navigationView.setNavigationItemSelectedListener(this);

22

मुझे लगता है कि मैं अपने सवाल का जवाब देने वाला हूं। जब आप चुनते हैं तो नवीनतम लगभग navigationViewअपना डिफ़ॉल्ट बनाता हैandroid:layout_height18dp"wrap_content" । तो, आपको android:layout_heightवह चुनना होगा जो आप अपने लिए चाहते हैं navigationViewया बस बना सकते हैं android:layout_height="match_parent"

<android.support.design.widget.NavigationView
    android:layout_width="320dp"
    android:layout_height="550dp"
    android:id="@+id/navigation_view_admin"
    android:layout_gravity="start">

</android.support.design.widget.NavigationView>

वैसे भी, जब आप नेविगेशन ड्रावर में कोई आइटम जोड़ते हैं तो यह अपने आप बढ़ जाता है।

अंत में, लुसी लियू ने कहा कि addDrawerListener()बजाय उपयोग करें setDrawerListener()


6
क्योंकि यह मेरा मुख्य प्रश्न नहीं है। आप देख नहीं सकते? कृपया मेरी समस्या को पहले पढ़ें ... यह केवल पदावनत की बात नहीं है,
david glorioso

7
तब आपके सवाल का शीर्षक तय हो सकता है
शरीक अब्दुल्ला
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.