Я пользуюсь PagerSlidingTabStrip
библиотекой для ViewPager
https://github.com/astuetz/PagerSlidingTabStrip. Я хочу изменить фрагменты во время прокрутки. Я достиг этого с помощью приведенного ниже кода.Android: Изменение фрагментов с помощью ViewPager
MainActivity.java
public class MainActivity extends SherlockFragmentActivity {
private MyPagerAdapter adapter;
ViewPager pager;
private PagerSlidingTabStrip tabs;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
pager = (ViewPager) findViewById(R.id.pager);
adapter = new MyPagerAdapter(getSupportFragmentManager());
pager.setAdapter(adapter);
final int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
.getDisplayMetrics());
pager.setPageMargin(pageMargin);
tabs.setViewPager(pager);
}
public class MyPagerAdapter extends FragmentPagerAdapter {
private final String[] TITLES = {"First","Second","Third"};
private SherlockFragment[] fragments = new SherlockFragment[] { new FirstFragment(), new SecondFragment(), new ThirdFragment()};
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public CharSequence getPageTitle(int position) {
return TITLES[position];
}
@Override
public int getCount() {
return TITLES.length;
}
@Override
public Fragment getItem(int position) {
return fragments[position];
}
}
}
FirstFragment.java
public class FirstFragment extends SherlockFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.fragment_main, container, false);
Toast.makeText(getSherlockActivity(), "This is from first", Toast.LENGTH_SHORT).show();
return v;
}
}
SecondFragment.java
public class SecondFragment extends SherlockFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.fragment_main, container, false);
Toast.makeText(getSherlockActivity(), "SecondFragment", Toast.LENGTH_SHORT).show();
return v;
}
}
ThirdFragment.java
public class ThirdFragment extends SherlockFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View v = inflater.inflate(R.layout.fragment_main, container, false);
Toast.makeText(getSherlockActivity(), "ThirdFragment", Toast.LENGTH_SHORT).show();
return v;
}
}
Я получил три фрагмента и я тестирую их Тосты.
Когда приложение открывается с помощью MainActivity, FirstFragment присоединяется к Activity
, но он показывает два тоста: один из первого фрагмента и другой из SecondFragment, а когда я перейду на вторую вкладку, вы увидите тост ThirdFragment.
Итак, я решил, что так будет. Если я прокручиваю слева направо, отображается фрагмент справа на текущий фрагмент, и если я прокручусь справа налево, отобразится фрагмент, оставшийся до текущего фрагмента. Пожалуйста помоги.
Спасибо.
есть ли у вас проблема? У меня такая же проблема. Пожалуйста, помогите мне решить проблему. Мой пост: http://stackoverflow.com/questions/23115283/change-fragment-with-viewpager –