HorizontalScrollView崩溃onRestoreInstance

穆罕默德·海达尔(Mohammad Haidar)

从以下位置更改Horizo​​ntalScrollView的高度后

<HorizontalScrollView
                android:id="@+id/topics_scroll_view"
                android:layout_width="match_parent"
                android:layout_height="92dp"/>

<HorizontalScrollView
                android:id="@+id/topics_scroll_view"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>

我开始崩溃

Caused by java.lang.ClassCastException
              android.view.AbsSavedState$1 cannot be cast to android.widget.HorizontalScrollView$SavedState
              android.widget.HorizontalScrollView.onRestoreInstanceState (HorizontalScrollView.java:1678)

在Horizo​​ntalScrollView中的此方法上发生崩溃

@Override
protected void onRestoreInstanceState(Parcelable state) {
    if (mContext.getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.JELLY_BEAN_MR2) {
        // Some old apps reused IDs in ways they shouldn't have.
        // Don't break them, but they don't get scroll state restoration.
        super.onRestoreInstanceState(state);
        return;
    }
    SavedState ss = (SavedState) state;       //*******this line is crashing
    super.onRestoreInstanceState(ss.getSuperState());
    mSavedState = ss;
    requestLayout();
}

我发现了类似的问题,我怀疑混淆处理无法保持Parcelable,因此他们建议将其添加到proguard文件中

-keepclassmembers class * implements android.os.Parcelable {
static ** CREATOR;
}

当我查看我的proguard文件时,我发现我已经包含了以下内容

-keepnames class * implements android.os.Parcelable { *; }
-keepclassmembers class * implements android.os.Parcelable { *; }

谁能区分这个问题,为什么当我更改时它立即开始崩溃android:layout_height这对任何人有意义吗?提前致谢

编辑:阅读一些类似的问题后,我发现这是java.lang.ClassCastException:android.view.AbsSavedState $ 1不能转换为android.support.v7.widget.Toolbar $ SavedState
如果你读了答案现在它说,使用相同android:id的不同的视图可能会导致这种情况,因此引起了我的注意,我最近添加了一个与Horizo​​ntalScrollView包含在同一布局中的视图,并且该视图保留了该视图

<RelativeLayout
            android:id="@+id/topics_scroll_view"
            android:layout_width="match_parent"
            android:layout_height="92dp"/>

这可能是问题吗?

安基塔

是的,绝对是因为您在两个布局中使用了相同的ID。

首先,交叉检查您的应用程序是否不在两个不同的地方重复使用相同的ID。

onRestoreInstanceState已经执行了findViewById方法和第一视图被发现未在Horizo​​ntalScrollView。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章