Kotlin Android-ViewStub不能为null

时间:2019-08-27 22:20:50

标签: android kotlin viewstub

我正在使用ViewStub将布局动态膨胀为bottom sheet。一切正常,除了ViewStub一旦膨胀后不能在代码中使用。

例如,一旦我放大了布局(使用View.VISIBLE,而不是.inflate(),就不能再使用视图存根:如果更改可见性,则会出现错误。

这是我的代码:

weight_force_button.setOnClickListener {

         mechanical_view.layoutParams = layoutParams
         mechanical_view.layoutResource = R.layout.sheet_weight_force
         mechanical_view.visibility = View.VISIBLE

        dialog.state = BottomSheetBehavior.STATE_EXPANDED

  }

close_button.setOnClickListener {
            dialog.state = BottomSheetBehavior.STATE_COLLAPSED

            mechanical_view.visibility = View.GONE
        }

这是用户单击weight_force_buttonclose_button后出现的错误:

  

java.lang.IllegalStateException:机械视图不得为空

1 个答案:

答案 0 :(得分:2)

ViewStub的文档:

  

在使ViewStub可见或调用inflate()时,布局资源会膨胀。然后,ViewStub在其父级中将自己替换为一个或多个膨胀的View。因此,ViewStub存在于视图层次结构中,直到调用setVisibility(int)或inflate()为止。使用ViewStub的布局参数将膨胀后的视图添加到ViewStub的父级。

膨胀后,它将从其父级中移除,并由膨胀后的布局取代。