相关疑难解决方法(0)

FragmentPagerAdapter getItem未被触发

目前,使用a FragmentActivity,我使用以下代码在2种类型的片段之间切换.

private void toggle() {
    Fragment oldFragment = getSupportFragmentManager().findFragmentById(R.id.content);
    Fragment fragment = null;
    if (oldFragment instanceof ColorFragment) {
        fragment = new ViewPagerFragment();
    } else {
        fragment = new ColorFragment(android.R.color.black);
    }

    getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment).commitAllowingStateLoss();
}
Run Code Online (Sandbox Code Playgroud)

2片段正在切换.

  • ColorFragment - 一个简单的片段,用纯黑色填充其背景.
  • ViewPagerFragment - 一个片段包含ViewPager.用户可以在紫色片段和蓝色片段之间滑动.

负责刷紫色和蓝色碎片的代码如下.

private static class MyFragmentPagerAdapter extends FragmentPagerAdapter {

    public MyFragmentPagerAdapter(FragmentManager fm) {
        super(fm);
    }

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

    @Override
    public Fragment getItem(int position) {
        switch (position) {
        case 0:
            return new ColorFragment(android.R.color.holo_purple); …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-viewpager fragmentpageradapter

38
推荐指数
2
解决办法
2万
查看次数

ViewPager + FragmentStatePagerAdapter +方向更改

我有一点问题:我有一些带有一些Pages的ViewPager,我使用FragmentStatePagerAdapter来处理数据.在肖像中,我有例如20页用于ViewPager,在景观中我只有10页用于ViewPager.因此,在方向更改时,我创建了一个具有不同数据的新适配器.

这里有一个小解释原因:我在肖像中展示一幅图像,在风景中展示两幅图像,但总是全部都在计算中 如果我要显示10张照片,我有10张照片,5张照片(总是两张).

但现在我有一个奇怪的错误:当我在索引5上的Landscape并转动设备时,ViewPager的当前页面设置为10.如果我再将它再次转回我在第5页.如果我现在将ViewPage刷到页面10从不调用适配器的methode getItem,并且ViewPage向我显示一个肖像图片而不是两个用于横向图片.怎么会发生这种情况?适配器或ViewPager中是否有缓存?在Activity的onCreate中,一切都是新创建的,适配器以及ViewPager的数据(只是带路径的字符串).所以任何想法如何解决这个真正可怕的"功能"?

这是一些代码:

的onCreate:

    mViewPagerAdapter = new ReaderPageViewAdapter(getSupportFragmentManager(), getBaseContext(), mCurrentDocument.mPages, getResources()
                .getConfiguration().orientation);
    mPageReader = (ReaderViewPager) findViewById(R.id.pager);
    mPageReader.setAdapter(mViewPagerAdapter);
Run Code Online (Sandbox Code Playgroud)

adapter getItem:

    public Fragment getItem(final int index) {
        final PageInfo pageInfo = mPages.get(index);
        final PageFragment pageFragment = (PageFragment) PageFragment
                .instantiate(mContext, pageInfo.mClss.getName(), pageInfo.mArgs);
        return pageFragment;
    }
Run Code Online (Sandbox Code Playgroud)

如果你需要更多东西,请告诉我.谢谢

android caching adapter fragment android-viewpager

11
推荐指数
1
解决办法
2万
查看次数