0

我曾經有3個活動,3個佈局。從多個活動意圖升級/遷移到單個ViewPager&Fragments

1. HomeActivity.java (activity_home.xml) 
2. HelpActivity.java (activity_help.xml) 
3. SettingsActivity.java (activity_settings.xml) 

每當我不得不打開其他活動,我曾經使用overridePendingIntent動畫滑入出意圖。通過這種方式,HomeActivity的所有變量都保留在本身中,並且HelpActivity的變量/方法本身與SettingsActivity相同。我在這些中使用了onCreate()來執行一些活動特定代碼。並且android:onClick="fetchSarcasm"activity_home.xml正在呼叫HomeActivity.java中的指定方法。所以,沒有衝突。所有正常的事情,發生在一個AndroidProject上,有3個活動,並且用意圖互相切換,正如我想要的那樣。

但是現在,我想遷移到ViewPager,而不是滑入意圖轉換。通過這種方式,將只有一個帶有ViewPager XML的Activity。這個ViewPager和它的FragmentPagerAdapter從3個類中獲取頁面,擴展Fragment和相關的XML佈局。

我要問:我在哪裏寫我頁特定的代碼onCreate()layoutView's onClick=""onChangeListeners。因爲延伸Fragment的3個類沒有任何ContextfindViewById(),並且它們不以不同佈局響應android:onClick="method"

我是否需要將三個活動的所有代碼混合到一個包含ViewPager的代碼中?如果是這樣,這會使ViewPager活動非常繁重。並且,對於每個代碼點處的所有頁面,編寫if(page=2){ dothis(); }似乎都是荒謬的。第3頁中的任何複選框(視圖)在其他頁面中均爲空。

我知道這可能是一個愚蠢的問題。我花了將近4天的時間試圖實現某些目標,但是我不能。此外,這只是我在Android的第二個月,所以我是新的。我不使用動作條,標籤條或導航抽屜。

我可以在SO聊天太多,如果你想問更多。

我只想知道我如何合併我在不使用ViewPager時所做的所有工作。

+0

'Fragment's在'ViewPager's當你刷卡給他們不一定重建。每當Fragment對用戶可見時,是否真的必須調用onCreate()代碼? –

+0

不,每次換頁都不需要'onCreate()'。在'onCreate()'中,我還原了一些sharedPreference,這會導致決定CheckBox是否被選中。我認爲這可以通過'setOnPageChangeListener'完成,但是每次都可以? – rupinderjeet

+0

你可以在'onViewCreated()'或者每個'Fragment'的'onCreateView()'中讀取你的首選項,然後相應地設置你的複選框。 –

回答

1

如果你只閱讀偏好一次爲每個Fragment,您可以將以前Activity.onCreate()邏輯移動到每個Fragment小號onViewCreated()onCreateView()。閱讀您的共享首選項並相應地設置您的複選框。

FragmentViewPager中的s不一定在每個頁面更改時重新創建。您可以使用ViewPager.setOffscreenPageLimit(int)一次更改多少個Fragment

Fragment Lifecycles explained

相關問題