9

टैबलाउट और व्यूपेजर के बीच स्वाइप करने के बाद काम नहीं करता है - टैब पर क्लिक करने से स्लाइडिंग ड्रॉवर आइटम के बीच स्वाइप करने के बाद काम नहीं होता है।टैबलायआउट और व्यूपेगर -टैब्स स्लाइडिंग ड्रॉवर आइटम

मैं ऐप पर काम करता हूं जिसमें स्लाइडिंग ड्रॉवर और टैबलेटआउट है। मैं इस ट्यूटोरियल For Sliding Drawer और For TabLayout का संदर्भ देता हूं।

अंदर स्लाइडिंग दराज

  1. कार्यसूची ->TabLayout(Tabs(Today,Monthly,Yearly))
  2. सेटिंग
  3. आदेश

मैं स्लाइडिंग दराज और Tablayout के बीच मुद्दा है। पहली बार व्यूअरज़र सही ढंग से लोड हो जाता है। लेकिन जब मैं अगले ड्रॉवर आइटम (सेटिंग फ्रैगमेंट) पर वापस जाता हूं, तो उसके बाद टास्कलिस्ट टैब पर खंड खंडक कोई भी टुकड़ा लोड नहीं कर सकता, जब उस पेजर को स्वाइप करें तो कुछ खंड लोड करें।

यहाँ जावा कोड

public class TaskListFragment extends Fragment { 
private Toolbar toolbar; 
private TabLayout tabLayout; 
private ViewPager viewPager; 

public TaskListFragment() { 
    // Required empty public constructor 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_my_page, container, false); 

    viewPager = (ViewPager)rootView.findViewById(R.id.viewpager); 
    tabLayout = (TabLayout)rootView.findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 
    tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
     @Override 
     public void onTabSelected(TabLayout.Tab tab) { 
      viewPager.setCurrentItem(tab.getPosition()); 

     } 

     @Override 
     public void onTabUnselected(TabLayout.Tab tab) { 

     } 

     @Override 
     public void onTabReselected(TabLayout.Tab tab) { 

     } 
    }); 

    // Inflate the layout for this fragment 
    return rootView; 
} 

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager()); 
    adapter.addFragment(new Mypage_TodayFragment(), "TODAY"); 
    adapter.addFragment(new Mypage_TodayFragment(), "WEEKLY"); 
    adapter.addFragment(new Mypage_TodayFragment(), "MONTHLY"); 
    viewPager.setAdapter(adapter); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

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

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 
@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
} 

@Override 
public void onDetach() { 
    super.onDetach(); 
} 

यहाँ .XML कोड

<android.support.design.widget.CoordinatorLayout 
     android:layout_width="match_parent" 
     android:layout_height="262dp" 
     android:id="@+id/view" 
     android:layout_weight="0.16"> 

     <android.support.design.widget.TabLayout 
      android:id="@+id/tabs" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      app:tabMode="fixed" 
      app:tabGravity="fill" 
      app:tabBackground="@drawable/mytabselector" 
      app:tabIndicatorColor="@color/Orange" /> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="50dp" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"/> 

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

अग्रिम धन्यवाद !!

+3

'एफ के बजाय 'FragmentStatePagerAdapter' का उपयोग करें ragmentPagerAdapter' –

उत्तर

13

ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());

के बजाय इस प्रयास करें

ViewPagerAdapter adapter = new ViewPagerAdapter(getChildFragmentManager());

इसका कारण यह है के बाद से आप एक टुकड़ा में एक viewpager है, टुकड़ा प्रबंधक है कि इस viewpager बनाने के लिए उपयोग करना चाहिए करना खंड लेनदेन एक childfragmentmanager होना चाहिए

+2

बहुत बहुत धन्यवाद !! मेरे लिए यह काम ... मुझे एक और चीज बताओ फ्रैगमेंट मैनेजर() AppCompatActivity में काम नहीं करता ??? –

+0

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

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