2015-05-08 3 views
1

Я обманываю SlidingTabsBasic пример для моих собственных требований. Я сделал очень мало с вкладками макетов, поэтому не уверен, что делать дальше.Как загрузить фрагменты в SlidingTabLayout

Я создал 3 вкладки, используя SlidingTabLayout. У меня есть фрагмент, который я хочу использовать для каждого, но я не знаю, как загрузить каждый фрагмент в вкладки. В примере с Google используется только идентификатор табуляции, чтобы изменить текстовую метку в соответствии с идентификатором табуляции.

 @Override 
     public Object instantiateItem(ViewGroup container, int position) { 
      // Inflate a new layout from our resources 
      View view = getActivity().getLayoutInflater().inflate(R.layout.pager_item, 
        container, false); 
      // Add the newly created View to the ViewPager 
      container.addView(view); 

      // Retrieve a TextView from the inflated View, and update it's text 
      TextView title = (TextView) view.findViewById(R.id.item_title); 
      title.setText(String.valueOf(position + 1)); 



      // Return the View 
      return view; 
     } 

Может содержать все коды, если необходимо, но не хочет перегружать сообщение. Кроме того, я не изменил какой-либо другой код (из загруженного образца)

EDIT:

Вот код из моего адаптера, который заполняет заголовки правильно, но не похоже, чтобы получить fragements (просто получить белый экран с закладками. создали Tab1.java и т.д., и макет для каждого из них.)

@Override 
public int getCount() { 
    return NumbOfTabs; 
} 

@Override 
public Fragment getItem(int position) { 
    switch (position) { 
     case 0: 
      return new Tab1(); 
     case 1: 
      return new Tab2(); 
     case 2: 
      Tab3 tab3 = new Tab3(); 
      return tab3; 
    } 
    return 

@Override 
public CharSequence getPageTitle(int position) { 
    return Titles[position].toUpperCase(); 
} 

ответ

0

Для работы вкладки вам необходимо использовать настройку адаптера. Я считаю, что в коде Google есть адаптер, созданный для вас. По существу, вы создаете новый Java-класс, который расширяет FragmentStatePagerAdapter (в зависимости от ваших потребностей), а затем устанавливает метод getItem для возврата необходимого вам фрагмента для каждой вкладки. Вот пример, который может помочь вам достичь вашей цели:

@Override 
public Fragment getItem(int position) { 
    switch (position) { 
     case 0: 
      FirstFragment fragment1 = new FirstFragment(); 
      return fragment1; 
     case 1: 
      SecondFragment fragment2 = new SecondFragment(); 
      return fragment2; 
     default: 
      return null; 
    } 
} 

выше код позволяет выбрать, какие фрагменты вы требуете на каждой вкладке. Дайте мне знать, если вам нужна дополнительная помощь.

EDIT: Кроме того, лучшим способом для названий вкладок было бы переопределить getPageTitle в классе адаптера и вернуть нужные названия строк.

+0

ОК, так что я добираюсь туда сейчас - я изменил адаптер и новый класс, расширяющий адаптер. 'getPageTitle' работает, но' getItem' ничего не возвращает. –

0

Я думаю, простой ответ, что фрагмент кода вы показываете потребности быть внутри адаптера. Основным механизмом является ViewPager, который при подключении к адаптеру будет вызывать этот метод для каждого элемента, поскольку его присутствие необходимо. Я не рассматривал их пример, но он собирался организовать вызов и распоряжение каждой «страницей».

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