【问题标题】:FragmentPagerAdapter Fragment getItem wrong position?FragmentPagerAdapter Fragment getItem 位置错误?
【发布时间】:2018-09-19 21:55:34
【问题描述】:

因此,由于某种原因,当我在选项卡式活动上切换选项卡时,我的位置错误。

在我的帖子底部,当我启动我的应用程序时,您可以看到我的 logcat,选项卡 1 和选项卡 2 调用了它们的 oncreateview。

即使我在必须是位置 0 的选项卡 1 上,位置 0 也会切换到 1。

所以我的问题是,当我更改选项卡时,会显示错误的数据和错误的 logcat 信息。

例如我切​​换到选项卡 2,logcat 显示我从选项卡 3 调用的 oncreateview ?

我该如何解决这个问题?

谢谢,

public class SectionsPagerAdapter extends FragmentPagerAdapter {

    private int numOfTabs;

    SectionsPagerAdapter(FragmentManager fm, int numOfTabs) {
        super(fm);
        this.numOfTabs = numOfTabs;
    }

    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0:
                Log.e(TAG, "Pos: "+ position);
                return new Tab1();
            case 1:
                Log.e(TAG, "Pos: "+ position);
                return new Tab2();
            case 2:
                Log.e(TAG, "Pos: "+ position);
                return new Tab3();
            case 3:
                Log.e(TAG, "Pos: "+ position);
                return new Tab4();
            case 4:
                Log.e(TAG, "Pos: "+ position);
                return new Tab5();
                default:
                    return null;
        }
    }

    @Override
    public int getCount() {
        // Get total pages
        return numOfTabs;
    }
}

Logcat

 .activities.MainActivity: Pos: 0
 .activities.MainActivity: Pos: 1
 .fragments.Tab1: onCreateView called!
 .fragments.Tab2: onCreateView called!

【问题讨论】:

    标签: java android android-fragments fragmentpageradapter


    【解决方案1】:

    ViewPager 默认加载 2 个标签。因此,当您第一次打开应用程序时,getItem 会被调用两次。进入tab2时,ViewPager会提前加载tab3,这样滚动才会流畅。见offscreenPageLimit

    【讨论】:

    • 有没有办法禁用它?
    • 查看@Nikhil 发布的链接
    • 我试过把它设置为0,不起作用,我不明白。
    • 不能设置为0。最小值为1。这是因为android需要显示从一个tab到下一个tab的滑动动画。如果下一个标签尚未加载,则无法播放此动画。
    • @nupadhyaya 那么如何在我的第一个和第二个选项卡中再次调用 oncreateview 呢?因为它不再被调用了。
    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多