2015-06-27 7 views
3

Я смотрю руководство по использованию TabLayout. Вот как они показывают, чтобы прикрепить класс PagerAdapter.Реализация скользящих вкладок в фрагменте

public class MainActivity extends FragmentActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Get the ViewPager and set it's PagerAdapter so that it can display items 
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 
    viewPager.setAdapter(new SampleFragmentPagerAdapter(getSupportFragmentManager(), 
     MainActivity.this)); 

    // Give the TabLayout the ViewPager 
    TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs); 
    tabLayout.setupWithViewPager(viewPager); 
} 

Однако их TabLayout находится в действии, а мой - в фрагменте. У меня возникли проблемы с адаптацией их кода к моему варианту использования, потому что я не совсем понимаю практические различия между действиями и фрагментами. Прямо сейчас, когда я пытаюсь провести пальцем между вкладками, ничего не происходит. Вот мой код:

public class CandidateListFragment extends Fragment { 
public static final String TAG = "candidates"; 

@InjectView(R.id.tabLayout) TabLayout tabLayout; 

public CandidateListFragment() { 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment_candidatelist, container, false); 
    initInstances(v); 
    return v; 
} 

private void initInstances(View v){ 
    //TODO: Change to support below API level 21 
    getActivity().findViewById(R.id.toolbar_actionbar).setElevation(R.dimen.toolbar_candidatelist_elevation); 
    ViewPager viewPager = (ViewPager) v.findViewById(R.id.viewpager); 
    viewPager.setAdapter(new TabsFragmentPagerAdapter(getActivity().getSupportFragmentManager(), 
      getActivity())); 
    ButterKnife.inject(this, v); 
    tabLayout.setupWithViewPager(viewPager); 
} 

@Override public void onDestroyView() { 
    super.onDestroyView(); 
    ButterKnife.reset(this); 
} 

ответ

3

Я понял! У меня был файл макета xml для фрагмента, установленного в RelativeLayout, а не LinearLayout, поэтому мой ViewPager не был на экране, а это означало, что я не мог пронести. Это простые ошибки, которые заставляют меня

+0

Я бы подумал, что RelativeLayout тоже может работать. Поздравляю с решением этого. –

Смежные вопросы