今天遇到一个返回上一个Fragment闪退的问题,下面是大致代码:
// xxx_layout.xml
<layout>
<include layout="@layout/view_edit_spinner" />
<include layout="@layout/view_edit_textview" />
</layout>
// view_edit_spinner.xml
<LinearLayout>
<androidx.appcompat.widget.AppCompatSpinner
android:id="@+id/edit_value"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
// view_edit_textview.xml
<LinearLayout>
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/edit_value"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
第一次进入页面正常,当跳转到下一个页面,再返回当前页面时,会报错闪退,而且是系统平台级的,经过排查,是由于引用其他布局文件,不同控件的resId 一样,导致系统尝试恢复原来状态时类型转换错误。
解决方法:android:id=”@+id/edit_value” 中的id不同控件改成不一样的即可