gpt4 book ai didi

未调用 Android View onSaveInstanceState

转载 作者:可可西里 更新时间:2023-11-01 19:10:43 25 4
gpt4 key购买 nike

我正在使用 CustomView,它扩展了一些 Android View ,例如 FrameLayout。在我的布局中,我使用带有自定义 PagerAdapter 的 ViewPager。

问题是当 fragment 重新附加到 ViewPager/Activity 时,我的View 没有恢复它的状态。例如,我有三个 fragment ,如果我滑动到最后一个 fragment 并返回到第一个 fragment ,则 ScrollView 不在我让它的位置:它回到默认值,在顶部。

我知道使用 PagerAdapter 时,并非所有 fragment 都同时处于 Activity 状态,基本上只是 +1/-1。

我找不到为什么我的 View.onSaveInstanceState() 没有被调用,所以没有调用 onRestoreInstanceState。

最佳答案

简单的答案:这是因为我没有为我的 View 设置 id(自定义或非自定义)。 Android 没有管理 onSaveInstanceState/onRestoreInstanceState如果没有为 View 设置 id。

因为我的 customView 正在扩展基本 View ,没有额外的属性,为 View 设置一个 ID 解决了这个问题,所以 onSaveInstanceState/onRestoreInstanceState 被调用了。

总而言之,使用以下方法之一:

来自 XML

<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
...
android:id="@+id/scrollView">
</ScrollView>

或来自 Java

yourCustomView.setId(R.id.myCustomView);

是最后一种情况,您将静态 ID 添加到 res/values/ids.xml <item name="myCustomView" type="id"/>

关于未调用 Android View onSaveInstanceState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28586443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com