Использовать несколько макетов в ViewPageIndicator

Я хотел бы знать, как установить адаптер макета в ViewpageIndicator. У меня 3 Layout, я бы хотел прокрутить корыто с помощью ViewpageIndicator. И каждый макет имеет свою собственную деятельность.

Класс SampleCirclesWithListener:

public class SampleCirclesWithListener extends BaseSampleActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_circles); mAdapter = new TestFragmentAdapter(getSupportFragmentManager()); mPager = (ViewPager)findViewById(R.id.pager); mPager.setAdapter(mAdapter); mIndicator = (CirclePageIndicator)findViewById(R.id.indicator); mIndicator.setViewPager(mPager); //We set this on the indicator, NOT the pager mIndicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { public void onPageSelected(int position) { Toast.makeText(SampleCirclesWithListener.this, "Changed to page " + position, Toast.LENGTH_SHORT).show(); } public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } 

Я искал часы для решения. Может ли кто-нибудь помочь? Большое спасибо!

Чтобы расширить замечательный ответ CommonsWare и заполнить его кодом, чтобы вы могли себе представить:

Если у вас есть демонстрационный проект Jake Wharton для ViewPageIndicator, у вас должен быть TestFragmentAdapter и TestFragment . Класс TestFragmentAdapter расширяет FragmentPagerAdapter а класс TestFragment должен расширять Fragment . Теперь пейджинговый жезл «Действия» невозможен, но вы можете пролистывать фрагменты.

Создайте Fragment и установите его в макет с помощью onCreateView() внутри вашего фрагмента:

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

Теперь в вашем FragmentPagerAdapter может быть метод, называемый getItem() . Switch положение и установите его в свой фрагмент:

 @Override public Fragment getItem(int position) { switch(position){ case 0: TestFragment fragment = new TestFragment(); return fragment; case 1: TestFragment2 fragment2 = new TestFragment2(); return fragment2; } return defaultFragment fragment3 = new defaultFragment(); return fragment3; } 

Теперь он должен работать так, как вы этого хотите.

Я хотел бы знать, как установить адаптер макета в ViewpageIndicator

Вы не устанавливаете адаптер макета в ViewpageIndicator. Вы устанавливаете PagerAdapter в ViewPager и, возможно, используете ViewPagerIndicator с этим ViewPager .

И каждый макет имеет свою собственную деятельность.

ViewPager не поддерживает подкачку между действиями. Он поддерживает подкачку между представлениями, где эти представления, возможно, управляются фрагментом (например, FragmentPagerAdapter ).