5

Merhaba Bir parçanın içinde bir TabLayout ve ViewPager var. Ancak, çocuk parçasına gelmek için sekme arasında kayarım yapamıyorum (Normalde Etkinlikte çalışırken ancak parçalı olarak çalışmıyorsa). ,ViewPager with TabPayout Fragment içinde çalışmıyor Android

viewPager.setAdapter(new CustomAdapter(getFragmentManager(), getContext())); 

Anyhelp kadar takdir edilir bir yapmış teşekkür

+0

lütfen viewPager.setAdapter olarak deneyin (yeni CustomAdapter (getSupportFragmentManager(), getContext())); // getSupportFragmentManager() veya getChildFragmentManager() –

+0

Bu sorunun, istediğiniz her şeye sahip olduğuna bakın. http://stackoverflow.com/q/34015117/2404262 –

+0

Yanıtınız için teşekkür ederiz. İkisini de denedim ama işe yaramadı. Neyse, tablayout ve ViewPager, etkinliktekiyle aynı parçada çalışır mı? –

cevap

6

: Ben bu hat ile sorun var şüphe

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     View inflateView = inflater.inflate(R.layout.fragment_assign_beacon_to_event, container, false); 

     //Viewpager and TabLayout 
     viewPager = (ViewPager)inflateView.findViewById(R.id.viewPager); 
     viewPager.setAdapter(new CustomAdapter(getFragmentManager(), getContext())); 

     tabLayout = (TabLayout)inflateView.findViewById(R.id.tabLayout); 


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

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

    tabLayout.post(new Runnable() { 
       @Override 
       public void run() { 
        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) { 
       viewPager.setCurrentItem(tab.getPosition()); 
      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 
       viewPager.setCurrentItem(tab.getPosition()); 
      } 
     }); 

Any here is my Custom Adapter class 

private class CustomAdapter extends FragmentPagerAdapter { 

     private String fragments[] = {"Assign Event", "Manage Event"}; 

     public CustomAdapter(FragmentManager supportFragmentManager, Context applicationContext) { 
      super(supportFragmentManager); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      switch (position) { 
       case 0: 
//     return new AssignEventToBeacon(); 
        return new Test1(); 
       case 1: 
        return new ManageEventAssigned(); 
       default: 
        return null; 
      } 
     } 

     @Override 
     public int getCount() { 
      return fragments.length; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return fragments[position]; 
     } 

    } 

: Burada

fragmanı içindeki Tablayout benim kodudur Benzer proje ve iş parçacığı için kodum:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View view = inflater.inflate(R.layout.outer_fragment, container, false); 
     setHasOptionsMenu(true); 

     ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewpager); 
     if (viewPager != null) { 
      setupViewPager(viewPager); 
     } 

     Log.v("Layout","Tabs"); 
     TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tabs); 
     tabLayout.setSelectedTabIndicatorColor(Color.parseColor("#FFFFFF")); 
     tabLayout.setTabTextColors(Color.parseColor("#707070"), Color.parseColor("#FFFFFF")); 
     assert viewPager != null; 
     tabLayout.setupWithViewPager(viewPager); 

     return view; 
    } 

private void setupViewPager(ViewPager viewPager) { 
     Adapter adapter = new Adapter(getChildFragmentManager()); 
     adapter.addFragment(new Tab1Fragment(), "PHOTOS"); 
     adapter.addFragment(new Tab2Fragment(), "HI-FIVES"); 
     viewPager.setAdapter(adapter); 
    } 


static class Adapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragments = new ArrayList<>(); 
     private final List<String> mFragmentTitles = new ArrayList<>(); 

     public Adapter(FragmentManager fm) { 
      super(fm); 
     } 

     public void addFragment(Fragment fragment, String title) { 
      mFragments.add(fragment); 
      mFragmentTitles.add(title); 
     } 

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

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

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitles.get(position); 
     } 
    } 
+0

Çok teşekkürler. Çözüm, getchildFragmentManager kullanmalıyız. Ama hala çalıştırılabilir kodun tamamını OncreateView içine koymamız veya OnActivityCreated'e taşımamız gereken bir sorum var. Parçanın yalnızca kullanıcının o parçacığa kayması durumunda çalıştırılmasını istiyorum [şimdi tüm parçaları aynı anda yüklüyorlar. –

+0

görüntülemelerinizi onCreateView() 'da şişirmelisiniz ve 'onCreateView()' da yapmak istediğiniz herhangi bir işlemi yapın 'veya' onActivityCreated() '. Sadece 'getActivity()' –

+0

aradığınız her yerde 'if (isAdded())' işlevini unutmayın, hala getContext ve getActivity arasında karıştırmayın. Ne zaman bir tane kullanmalı? Yalnızca kullanıcı onlara kaydırıldığında parça yükleme yapmak için bir örnek var mı? –