Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
488 views
in Technique[技术] by (71.8m points)

android - onRestoreInstanceState is not called when custom views are generated programmatically

I have an application where all the UI comes from a server, so the views are all custom and generated programmatically. Additionally, I have to remove all the views and re-create them when the device is rotated.

In one of my custom views I save the state and it's called on device rotation:

override fun onSaveInstanceState(): Parcelable = Bundle().apply {
    putInt("selectedTabPosition", tabLayout.selectedTabPosition)
    putParcelable("superState", super.onSaveInstanceState())
}

In my Fragment, I can see the saved state exists after device rotation. So I view?.restoreHierarchyState(state) in the fragment to call all children onRestoreInstanceState:

override fun onActivityCreated(savedInstanceState: Bundle?) {
       super.onActivityCreated(savedInstanceState)
                   
      // Get the UI from serve, build the UI...
     savedInstanceState?.getSparseParcelableArray<Parcelable>("android:view_state")?.let { state ->
           view?.restoreHierarchyState(state)
     }
}

The view?.restoreHierarchyState(state) is called with the proper state. But onRestoreInstanceState is not called in my custom view (which exists in the view hierarchy)

question from:https://stackoverflow.com/questions/65829809/onrestoreinstancestate-is-not-called-when-custom-views-are-generated-programmati

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...