TabHostの一部であるフラグメントにViewPagerがあるアプリを作成しようとしています。
すべてうまくいきます。タブバーがあり、タブを切り替えることができます。 ViewPagerでタブに切り替えると、すべてが正しく表示されます。しかし、ViewPagerでこのタブを離れてこのタブを返すと、コンテンツが表示されなくなります。横に2回スクロールすると、次の画像が表示されます。そして、2回戻ると、画像が読み込まれている(おそらくオフスクリーンロードされている)こともわかります。TabFragmentに戻ると、インスタンス化されていますが、ViewPagerのフラグメントは再インスタンス化されていません。
画面のモックアップとコードの一部を含めました。
誰か助けてもらえますか?
乾杯!
@Override
public void onActivityCreated(Bundle savedInstanceState) {
mProjectText = (TextView) getView().findViewById(R.id.projectText);
mProjectText.setText(mActiveProject.getInspirationText());
mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration());
mPager = (ViewPager)getView().findViewById(R.id.pager);
mPager.setAdapter(mAdapter);
super.onActivityCreated(savedInstanceState);
}
public class AlbumAdapter extends FragmentStatePagerAdapter {
private ArrayList<ProjectContent> mItems;
public AlbumAdapter(FragmentManager fm, ArrayList<ProjectContent> items) {
super(fm);
this.mItems = items;
}
@Override
public Fragment getItem(int position) {
return AlbumContentFragment.newInstance(mItems.get(position));
}
@Override
public int getCount() {
return mItems.size();
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}}
問題が見つかりました。 2日かかりましたが、修正されました。
使用する代わりに
mAdapter = new AlbumAdapter(getFragmentManager(), mActiveProject.getInspiration());
あなたは使うべきです
mAdapter = new AlbumAdapter(getChildFragmentManager(), mActiveProject.getInspiration());
5人のキャラクターにとってはこれで終わりです。
私はこれを長い間探していましたが、最終的に解決策が見つかりました。ページアダプタインスタンスFragmentPagerAdapter
をFragmentStatePagerAdapter
の例に変更します。
class PageAdapter extends FragmentStatePagerAdapter {
getChildFragmentManager()
の代わりにgetFragmentManager()
を使用し、FragmentStatePagerAdapter()
の代わりにFragmentPagerAdapter()
を使用する必要があります。誰かに役立つことを願っています。