Hug*_*sse 14 android android-view android-viewpager
我正在使用CustomView,它扩展了一些像FrameLayout这样的Android视图.在我的布局中,我使用带有自定义PagerAdapter的ViewPager.
问题是当片段重新连接到ViewPager/Activity时,我的View 没有恢复它的状态.例如,我有三个片段,如果我滑到最后一个片段然后回到第一个片段,ScrollView就不是我允许的了:它返回默认值,在顶部.
我知道使用PagerAdapter,并非所有片段在同一时间都是活动的,基本上是+ 1/-1.
我找不到为什么我的View.onSaveInstanceState()没有被调用,所以为onRestoreInstanceState.
Hug*_*sse 31
答案很简单:这是因为我没有在我的视图中设置id(自定义或不自定义).onSaveInstanceState/onRestoreInstanceState如果没有将id设置为视图,则Android无法管理.
因此,当我的customView扩展基本视图而没有额外属性时,为视图设置ID解决了问题,因此应该调用onSaveInstanceState/onRestoreInstanceState.
总而言之,请使用以下方法之一:
来自XML
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
...
android:id="@+id/scrollView">
</ScrollView>
Run Code Online (Sandbox Code Playgroud)
或者来自Java
yourCustomView.setId(R.id.myCustomView);
Run Code Online (Sandbox Code Playgroud)
在最后一种情况下,您将静态ID添加到res/values/ids.xml <item name="myCustomView" type="id"/>
| 归档时间: |
|
| 查看次数: |
4834 次 |
| 最近记录: |