当我到达最后一个项目时,寻呼机适配器没有注册

时间:2016-02-20 15:29:53

标签: android android-pageradapter

我有一个寻呼机适配器,可在我的应用上显示内容。我希望它能够记住方向改变时的位置。它适用于所有情况,除非我转到最后一个选项卡。它显示得很好,但当我更改方向时,它会返回上一个选项卡。它只发生在那个场景中。我添加了一个日志,看它是否记录了位置的变化,除了最后一个标签外,它在任何地方都可以。

来自onResume:

Microsoft Visual C++ 2013

寻呼机适配器:

//A lot of code here

//if no book opened
    if (s.getLibro() == null){
        s.setLibro("Test");
    }
    if (s.getCap() == 0){
        s.setCap(1);
    }

//More code....

MyPagerAdapter adapter = new MyPagerAdapter();
    pager = (ViewPager) findViewById(R.id.my_pager);
    pager.setAdapter(adapter);
    tabIndicator = (TabPageIndicator) findViewById(R.id.tab_indicator);
    tabIndicator.setViewPager(pager);
    pager.setCurrentItem(s.getCap()-1); 
    tabIndicator.setCurrentItem(s.getCap()-1);

    Log.v(TAG, "FInished onResume");

这一行的事实     Log.v(TAG,"完成我的寻呼机适配器对象" +(位置-1)); 当我进入最后一个标签时,我不会出现这种情况。不确定是什么问题。当我浏览应用程序时,它似乎工作正常(我可以看到最后一个选项卡没有问题)。

1 个答案:

答案 0 :(得分:2)

PagerAdapter预加载下一页。当您查看第2页时,PagerAdapter加载第3页。您可以通过从上一个实例化页面中减去1来获取当前页面。 由于适配器未加载下一页(因为没有下一页),因此在最后一页中断。

获取当前位置的正确方法是从ViewPager.OnPageChangeListener()保存当前位置。