2015-09-01 31 views
11

स्वाइप नहीं करता हूं, मैं नेविगेशन बार को लागू करने के लिए ViewPager और PagerTabStrip का उपयोग करना सीख रहा हूं। मैंने इसे कार्यान्वित किया है, मेरी समस्या यह है कि: हर बार जब मैं ऐप को ताजा खोलता हूं, शीर्षक नहीं दिखाते हैं, लेकिन जब मैं इसे एक बार स्वाइप करता हूं, तो शीर्षक सभी फिर से दिखाई देते हैं, और फिर सबकुछ सामान्य होता है। कूट नीचे:व्यूपेजर शीर्षक तब तक प्रकट नहीं होता जब तक कि मैं इसे

स्वनिर्धारित एडाप्टर

public class MyPagerAdapter extends PagerAdapter { 
    private List<View> viewList; 
    private List<String> titleList; 

    public MyPagerAdapter(List<View> viewList, List<String> titleList){ 
     this.viewList = viewList; 
     this.titleList = titleList; 
    } 

    @Override 
    public int getCount() { 
     return viewList.size(); 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object o) { 
     return view == o; 
    } 

    @Override 
    public Object instantiateItem(ViewGroup container, int position) { 
     container.addView(viewList.get(position)); 
     return viewList.get(position); 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView(viewList.get(position)); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return titleList.get(position); 
    } 
} 

.xml फ़ाइल: enter image description here

और यह:

<android.support.v4.view.ViewPager 
    android:id="@+id/viewPager" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center"> 

    <android.support.v4.view.PagerTabStrip 
     android:id="@+id/tab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom" 
     /> 

</android.support.v4.view.ViewPager> 

यह की "बस एप्लिकेशन आइकन पर क्लिक कर" स्क्रीनशॉट है मैं दूसरे पृष्ठ पर जाने के बाद हूं: enter image description here

मैं वास्तव में निराश हूं। धन्यवाद!!

+0

में निम्न कोड का उपयोग आप के अंदर अपने PagerTabStrip है आपके व्यूपाजर, इसे रास्ते से बाहर रखने की कोशिश करें। आप अपने कन्स्ट्रक्टर में पैरामीटर के रूप में विचारों को पारित कर रहे हैं; यह स्मृति के लिए अच्छा नहीं है। टुकड़ों का उपयोग करने का प्रयास करें, यह एक उदाहरण है कि इसे कैसे करें http://developer.android.com/reference/android/support/v4/app/FragmentStatePagerAdapter.html – Raykud

+0

नहीं, समस्या का समाधान नहीं किया, मुझे विश्वास है कि मैं हूं इसे ViewPager के अंदर रखना चाहिए। – TPWang

+0

क्या आप पेज पर चयन किए गए फ़ंक्शन पर शीर्षक सेट कर रहे हैं? –

उत्तर

12

यह एक मुद्दा com.android.support:appcompat-v7:23.0.0 में दिखाई दिया है। आप यहां देख सकते हैं https://code.google.com/p/android/issues/detail?id=183127

उस लिंक में Google समर्थन टीम ने उल्लेख किया है कि भविष्य में रिलीज में दोष तय किया जाएगा। तो अब के लिए समाधान का उपयोग कर com.android.support:appcompat-v7:22.2.1

अद्यतन परियोजना का निर्माण होता है: यदि संभव आप तो आप @nidheeshdas द्वारा प्रदान की एक और समाधान के साथ आगे जा सकते हैं के लिए। मैंने सरल परियोजना पर कोशिश की है; यह संशोधित गतिविधि के() onResume अंदर @nidheeshdas का समाधान

viewPager.setCurrentItem(1); 
    viewPager.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      viewPager.setCurrentItem(0); 
     } 
    },100); 

नई अद्यतन काम: जैसा कि ऊपर गूगल समस्या ट्रैकर लिंक और जेपी Ventura से टिप्पणी में उल्लेख किया है। मैंने लाइब्रेरी के नए संस्करण के साथ प्रयास किया है और समस्या ठीक हो रही है।

+1

निर्भरता को अद्यतन करना "com.android.support:appcompat-v7:23.1.1" और टूल संस्करण को "23.0.2" में भी काम करता है। –

1

मैंने हाल ही में यह समस्या भी शुरू कर दी है, और थोड़ा सा परीक्षण करने के बाद मुझे लगता है कि मुझे एंड्रॉइड के नवीनतम समर्थन पैकेज अपडेट में एक बग मिली है।

समस्या com.android.support:appcompat-v7:23.0.0 में दिखाई देती है।

निर्भरता को com.android.support:appcompat-v7:22.2.1 (दूसरा नवीनतम अपडेट) पर बदलने का प्रयास करें और देखें कि यह काम करता है या नहीं।

दुर्भाग्यवश, मुझे अभी तक नवीनतम समर्थन पैकेज अपडेट के साथ काम करने के लिए कोई समाधान नहीं मिला है।

+0

मुझे प्रतिक्रिया भी नहीं मिलती है जब मैं एड निर्भरता मेनू और लाइब्रेरी निर्भरता पर क्लिक करें, यह सिर्फ प्रतिक्रिया नहीं देता है। मैं पहले एंड्रॉइड स्टूडियो को अनइंस्टॉल करने जा रहा हूं और फिर इसे पुनः इंस्टॉल करूँगा। – TPWang

1

इसे आजमाएं। ऐसा लगता है कि मेरे लिए काम कर रहा है।

@Override 
protected void onResume() { 
    super.onResume(); 
    pager.setCurrentItem(1); 
    Task.delay(500).continueWith(new Continuation<Void, Object>() { 
     @Override 
     public Object then(Task<Void> task) throws Exception { 
      pager.setCurrentItem(0); 
      return null; 
     } 
    }, Task.UI_THREAD_EXECUTOR); 
} 

ऑनर्यूज पेजर को 1 पर सेट करें और फिर 0 पर वापस सेट करें। यह शीर्षक पहली बार लोड होता है।

2
इसके बजाय android.support.v4.view.PagerTabStrip का उपयोग करने का

, का उपयोग android.support.design.widget।ViewLager के लिए टैब प्रदर्शित करने के लिए TabLayout। इसे Google डिज़ाइन समर्थन लाइब्रेरी में शामिल किया गया है।

अधिक जानकारी के लिए इस लिंक पर देखें http://android-developers.blogspot.in/2015/05/android-design-support-library.html

बस कुछ पंक्तियां:

viewPager=(ViewPager)v.findViewById(R.id.viewPager); 

ViewPagerAdapter adapter=new ViewPagerAdapter(this.getChildFragmentManager(),doctor); 
adapter.setViewPagerFragmentListener(this); 
viewPager.setAdapter(adapter); 

tabLayout.setupWithViewPager(viewPager); //Sync Tabs with viewPager 
tabLayout.setTabsFromPagerAdapter(adapter); //Setup tabs titles 

और बदलने के लिए खिताब ViewPagerAdapter

@Override 
public CharSequence getPageTitle(int position) { 
    switch (position){ 
     case 0: 
      return "Title 1"; 
     case 1: 
      return "Title 2"; 
     case 2: 
      return "Title 3"; 
    } 
    return super.getPageTitle(position); 
} 
संबंधित मुद्दे

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