/ / Android PagerSlidingTabStrip:方向が変わるとタブ間のスクロールが途切れる - android、scroll、android-viewpager、pagerslidingtabstrip

Android PagerSlidingTabStrip:方向が変更されたときにタブ間をスクロールする - アンドロイド、スクロール、android-viewpager、pagerslidingtabstrip

使っています PagerSlidingTabStrip サポートからの固定タブおよびViewPager用としょうかん。縦向きから横向きに向きを変えて、あるページから別のページにスクロールしようとしたり、タブの1つをクリックしようとすると、スクロールがどうにか中断されます。スクロールインジケータはタブ幅では移動しませんが、ランダムな長さだけ移動します。

@Override public void onViewCreated(View view, Bundle savedInstanceState)
{
super.onViewCreated(view, savedInstanceState);

//TODO BUG orientation changes
PagerAdapter pagerAdapter = new PagerAdapter(getActivity().getSupportFragmentManager());
pager = (ViewPager) view.findViewById(R.id.viewpager);
pager.setAdapter(pagerAdapter);

PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) view.findViewById(R.id.tabs);
tabs.setShouldExpand(true);
tabs.setViewPager(pager);

pager.setCurrentItem(0);
}

なぜそれが起こるのでしょうか。

回答:

回答№1の場合は3

あなたのコードに基づいて、あなたは明らかにFragmentでViewPagerを使います(そしてViewPagerはネストされたFragmentsも示します)。

ViewPagerを保持するFragmentの子FragmentManager(Activityのアクティビティではない)をViewPagerのアダプタに提供する必要があります。

の代わりに:

PagerAdapter pagerAdapter = new PagerAdapter(getActivity().getSupportFragmentManager());

これを使って:

PagerAdapter pagerAdapter = new PagerAdapter(getChildFragmentManager());