2012-07-02 6 views
79

मेरे पास व्यूपेजर के अंदर तीन पृष्ठ (टुकड़े) हैं, हालांकि मैं केवल उन दो पृष्ठों के लिए मेनू आइटम प्रदर्शित करना चाहता हूं।निर्धारित करें कि जब कोई व्यूपर पेज बदलता है

एक previous SO answer में दिए गए कोड काम करने के लिए प्रतीत नहीं होता:

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 

    if (isVisibleToUser == true) { } 
    else if (isVisibleToUser == false) { } 

} 

ग्रहण कहते हैं @Override की जरूरत नहीं है और सुपर सेट नहीं किया जा सकता है। इसे सिस्टम द्वारा कभी नहीं बुलाया जाता है, और यहां तक ​​कि अगर मैं यह निर्धारित करता हूं कि इस समय कौन सा पृष्ठ दिखाया जा रहा था? क्या मुझे यहां कुछ मदद मिल सकती है?

+0

यह मेरे लिए काम करता है, और दिए गए समाधान का उपयोग करने के तरीके के बारे में थोड़ा और संदर्भ देता है: [Fragment के अंदर ViewPager टैब परिवर्तन का पता लगाएं] (http://stackoverflow.com/questions/9779397/पता लगाने-viewpager-टैब-परिवर्तन-अंदर-टुकड़ा)। – gcl1

उत्तर

166

उपयोग ViewPager.onPageChangeListener:

viewPager.addOnPageChangeListener(new OnPageChangeListener() { 
    public void onPageScrollStateChanged(int state) {} 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {} 

    public void onPageSelected(int position) { 
     // Check if this is the page you want. 
    } 
}); 
+1

लाइन 1 में एक टाइपो है: SetOnPageChangeListener को सेट किया जाना चाहिएऑनपेज चेंजलिस्टर। – Javide

+30

आप इसके बजाय एक SimpleOnPageChangeListener का उपयोग कर सकते हैं और केवल सही उत्तर देने के लिए पेज पर चयन किया गया – clocksmith

+0

Thanx – Jigsh

101

ViewPager.setOnPageChangeListener अब मान्य नहीं है। अब आपको इसके बजाय ViewPager.addOnPageChangeListener का उपयोग करने की आवश्यकता है।

उदाहरण के लिए ,

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

     } 

     @Override 
     public void onPageSelected(int position) { 

     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    }); 
+2

का उपयोग करें मुझे समझ में नहीं आता है। एक पूर्ण शुरुआत कर रहा हूँ। तो हम उन तरीकों के अंदर क्या डालते हैं। कृपया 'addOnPageChangeListener' कहां से सीखना है, इस पर मेरी सहायता करें। जानकारी के लिए –

+0

+1, लेकिन इन दो 'ViewPager.SimpleOnPageChangeListener' और' ViewPager.OnPageChangeListener' का क्या उल्लेख है, इसका क्या अंतर है? – RoCk

+2

@RoCk SimpleOnPageChangeListener के साथ आपको केवल उन्हीं तरीकों को ओवरराइड करने की आवश्यकता है जिन्हें आप वास्तव में उपयोग करना चाहते हैं। उदाहरण के लिए http://stackoverflow.com/a/31961397/608312 देखें। – JakeSteam

31

तुम भी ViewPager.OnPageChangeListener के बजाय ViewPager.SimpleOnPageChangeListener का उपयोग करें और केवल उन तरीकों का उपयोग करना चाहते ओवरराइड कर सकते हैं।

viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 

    // optional 
    @Override 
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } 

    // optional 
    @Override 
    public void onPageSelected(int position) { } 

    // optional 
    @Override 
    public void onPageScrollStateChanged(int state) { } 
}); 

आशा इस मदद :)

संपादित करें: एंड्रॉयड एपीआई के अनुसार, setOnPageChangeListener (ViewPager.OnPageChangeListener listener) मान्य नहीं है। कृपया यह यूआरएल जांचें: - Android ViewPager API

+1

'mViewPager.setOnPageChangeListener() के रूप में;' अब बहिष्कृत है, यह ठीक काम कर रहा है। –

+0

उपर्युक्त कोड में, यह पता लगाने के लिए कि क्या कोई राज्य बदल गया है, वर्तमान स्थिति को सहेजता है और पेज की स्क्रॉल किए गए पृष्ठ पर स्क्रॉल होने पर इसकी तुलना करें। – AnupamChugh