android Viewbinding显示可空视图,当屏幕旋转时,应用程序也崩溃

pkbketx9  于 2023-01-15  发布在  Android
关注(0)|答案(1)|浏览(217)

下面是我的xml视图

<androidx.appcompat.widget.AppCompatEditText
    android:id="@+id/et_user_name"
    style="@style/text_bold"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:layout_marginStart="@dimen/_8sdp"
    android:layout_weight="1"
    android:backgroundTint="@color/activity_background_color"
    android:cursorVisible="false"
    android:maxLines="1"
    android:imeOptions="actionDone"
    android:minHeight="48dp"
    android:padding="@dimen/_6sdp"
    android:text="@string/guest_user"
    android:textColor="@color/text_color_dark"
    android:textSize="@dimen/_18sdp" />

下面是我setText方法

mView.etUserName!!.setText(sharePrefHelper.user?.name)

这是mView的初始化

private lateinit var mView: FragmentProfileBinding
mView = FragmentProfileBinding.inflate(inflater)

发生这种情况的一些XML视图大多数视图不可为空,但一些视图显示为可为空,不知道是什么导致了这个问题

xlpyo6sf

xlpyo6sf1#

根据视图绑定文档:
零安全:由于视图绑定创建了对视图的直接引用,因此不存在由于无效视图ID而导致空指针异常的风险。此外,当视图仅存在于布局的某些配置中时,绑定类中包含其引用的字段将标记为@Nullable。
如果您的绑定中有一个可以为空的字段,这意味着您有另一个配置(例如,res/layout-land或其他文件夹中的一个),该配置包含具有该android:id的视图。
将带有android:id的视图添加到该布局的每个配置后,它将不再是可空的。另一个选项是删除该布局的备用版本,并在所有配置中使用相同的布局。

相关问题