ViewPager与FragmentStatePager

时间:2013-05-02 18:12:18

标签: android

我有一个ViewPager和一个FragmentStatePager,它附加了大约8个片段​​。该应用程序设计为向导。用户将一页上的信息输入到下一页,依此类推。现在我在收集信息和恢复信息时遇到问题。当用户向前滑动时,如何保存我的信息,同样当我回过头来调用哪些函数时,我可以从我的对象中读取数据并填充屏幕UI?我尝试过OnSaveInstanceState,但几乎没有调用过。 OnResume有时被称为有时没有。另请注意,我正在使用RoboGuice将视图注入到我的片段中,因此ui字段仅在OnViewCreated函数之后可用。还要注意我的八个片段中的每一个都实现了以下接口。在这两个函数中,应用程序级别的singelton要么被读取,要么读取和访问Fragment中的UI字段。我只是找不到将这些功能插入的地方?任何建议都会有很大用处。我会讨论setOnPageChangeListener但是在实际页面对用户可见之前调用onPageSelected事件并且可能导致空指针异常,因为我的RoboGuice注入并没有真正准备好。

public interface FragmentState {
    public void saveFragementState();
    public void restoreFragementState();
}

1 个答案:

答案 0 :(得分:0)

您应该使用ViewPager.setOffscreenPageLimit(k)将ViewPager的所有片段从n-k缓存到n + k。

然后您可以安全地使用onPageSelected()

    pager.setOnPageChangeListener(new OnPageChangeListener() {
        public void onPageScrollStateChanged(int state) {

        }

        public void onPageScrolled(int position, float positionOffset,
                int positionOffsetPixels) {
        }

        public void onPageSelected(int position) {
            fragments.get(position).doThings();
        }
    });