2015-04-05 57 views
0

我有一个ViewPager,有4-6类产品。当用户点击某个产品时,他们将获得一个新的片段。当他们回击时,他们被送回ViewPager,一切都要重新加载,所有的分页已经丢失。我可以通过缓存结果来保存重新加载,但理想情况下,如果用户输入了26个结果,则应该返回到其确切的滚动位置。然而,26个结果也可能是2页的页码(我们使用无尽的滚动)。 我很惊讶Android没有内置机制来处理这个例程场景。我错过了什么吗?Android - ViewPager恢复后退按钮

代码:

这是我如何加入一个片段:

private void addFragment(AppFragment fragment) 
    { 
     getSupportFragmentManager().beginTransaction().replace(R.id.fragment, fragment).addToBackStack(fragment.getTitle()).commit(); 

    } 

我也没什么的onResume,只有2种方法我用的都是OnCreateView和OnActivityCreated

+0

你能展示一些(的相关部分)的代码吗?因为'ViewPager'在保存时会保存并恢复上次已知的位置。你在'onResume()'中重置适配器吗? – dhke 2015-04-05 17:00:27

+0

@dhke不,我刚刚证实了这一点。我在onActivityCreated中有一个网络调用,但除此之外,就是这样。 – StackOverflowed 2015-04-05 18:24:24

回答

1

肮脏和simpliest solutuon在片段内部创建一个新的活动。向那里展示你的数据。只要用户按下后退按钮,他就会看到以前的活动。但是,如果系统从ram中删除数据(如果用户在其他活动中花费很多时间或导航更多),则需要恢复状态。基本上,恢复您的数据并创建新的寻呼机适配器。然后,您需要将其设置为查看寻呼机并调用setCurrentPage(position)。

祝你好运:)

0

你应该在ViewPager中设置离线限制属性。
ViewPager pager = (ViewPager) findViewById(R.id.viewPager); pager.setOffscreenPageLimit(2);

一套应保留在视图层次结构的当前页面的两侧处于空闲状态的页数。超出此限制的页面将在需要时从适配器重新创建。

+0

对不起,这不是处理所描述的问题。 – StackOverflowed 2015-04-05 18:19:41