2012-04-09 38 views
1

我有一個自定義的Viewpager,它禁用了觸摸事件。所以我有控制viewpager的按鈕'Next'和'Back'。我的問題是如何在viewpager中的片段之間傳遞數據或包。通常情況下,它可以工作,但是即使它們沒有被顯示,碎片也會被創建。這是因爲viewpager幻燈片效果,它必須在前面和之後才能使效果生效。所以這意味着我不能使用bundles,因爲片段已經被創建。這就是我想要做的Viewpager傳遞碎片之間的捆綁包

片段1 - >片段2 - >片段3

片段1被創建,所以是片段2當我按「下一步」片段2所示。當我再次按'Next'時,我想將一個包傳遞給Fragment 3,但片段3已經創建,所以它不起作用。

另一種方式我認爲是調用一個方法在每個片段中,當Viewpager將它作爲當前項目。

+0

數據是否需要在創建時存在,或者如果您在顯示它之前通過它,它是否正常? – dmon 2012-04-09 20:04:04

+0

@dmon在顯示它之前,它需要在那裏。就像片段2會在我按下'Next'時傳遞數據,然後將顯示片段3。 – 2012-04-09 20:08:41

回答

1

爲什麼你不創建一個你的所有片段都實現的接口?該界面將有兩種方法:getParameterData()setParameterData()。在您的ViewPager中,當他們按下一個或上一個時,在當前片段上調用getParameterData(),然後在要顯示的片段上調用setParameterData()

+0

哇,我從來沒有想過,謝謝。還有一件事。我注意到Fragment有一個名爲setUserVisibleHint(boolean isVisibleToUser)的方法。這意味着當片段顯示在用戶界面上? Viewpager將其設置爲當前調用該方法的Item。 – 2012-04-09 20:58:09

+0

這可能,我不確定。你有沒有嘗試覆蓋'onResume()'? – dmon 2012-04-10 00:03:06

+0

我使用了onResume(),但是在片段被創建時被調用,這是在屏幕外。所以這沒有奏效。 setUserVisibleHint完美適用於我想要做的事情。我只是檢查isVisibleToUser布爾值來查看它是否在屏幕上可見。 – 2012-04-10 01:08:17

1

你可以分享/通過在主機活動保持他們通過片段之間的對象。