android - IllegalStateException because notifyDataSetChanged() on PagerAdapter not called -


i have following situation , couldn't find solution far: in activity there viewpager fragmentstatepageradapter. activity call activity b. there can change global data, affects number of pages in viewpager in activity a. use button, return activity a, following exception:

e/androidruntime(1756): java.lang.illegalstateexception: application's pageradapter changed adapter's contents without calling pageradapter#notifydatasetchanged! expected adapter item count: 121, found: 151 pager id: com.example.blablabla:id/main_view_pager pager class: class android.support.v4.view.viewpager problematic adapter: class com.example.blablabla.activitymain$mainviewpageradapter e/androidruntime(1756):     @ android.support.v4.view.viewpager.populate(viewpager.java:962) e/androidruntime(1756):     @ android.support.v4.view.viewpager.populate(viewpager.java:914) ... 

i tried calling notifydatasetchanged(); on adapter @ different places (oncreate, onrestart, onresume, onactivityresult) nothing worked.

another thing tried setting adapter null everytime activity paused , recreating it, when activity resumed. avoids crash, 1. doesn't feel right , 2. pages disappear shortly before new activity becomes visible, not good.

so, how handle situation correctly?

according error message seem set adapter before set elements received adapter. ([...]expected adapter item count: 121, found: 151[...])

so should call pageadapter.notifydatasetchanged(); in activity b after changing data set (because should call method whenever change happens). passing through activities might troublesome.

a solution following explained by alvarolb. alvarob used settag() method in instantiateitem() creating new view , findviewwithtag() can retrieve it. may want take grimmace code sample builds upon alvarolbs solution.

another solution from rui.araujo removing views , recreate them sounds pretty have done.


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -