2015-04-05 41 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