【问题标题】:View is null when using kotlinx synthetic on orientation changed在方向更改时使用 kotlinx 合成时视图为空
【发布时间】:2019-01-07 15:41:20
【问题描述】:

当且仅当方向改变后,Myview 在 vi​​ewmodel 的观察者中为空

我使用 kotlinx 合成所有视图都已启动,但那些视图抛出在 viewmodel 的观察者中访问的空对象异常

这是我的进口

 import kotlinx.android.synthetic.main.nav_header_story.user_avatar

一切都很好,但是当方向改变时,它会抛出空指针异常,但在 viewmodel 的观察者范围内会启动其他视图

   personInfoViewModel.shortUserInfo.observe(this , Observer {shortInfo ->

       userAvatar.setOnClickListener {

        })

我找不到哪里出了问题然后我尝试了

    userAvatar = nav_view.getHeaderView(0).findViewById(R.id.user_avatar)

即使在方向改变后,每次都可以访问它对我有用

    personInfoViewModel.shortUserInfo.observe(this , Observer {shortInfo ->

       userAvatar.setOnClickListener {

        })

我很奇怪这是怎么回事

kotlinx.android.synthetic.main.nav_header_story.user_avatar

方向改变后

【问题讨论】:

  • 你尝试过类似 var localUserAvatar = userAvatar;然后在“观察”中使用localUserAvatar?看起来像是复制了闭包,并且使用了这个副本而不是属性“userAvatar”

标签: android mvvm kotlin viewmodel android-viewmodel


【解决方案1】:

当您仅导入特定视图时,调用 onDestroyView() 后不会清除视图缓存。您需要导入整个包以使其工作。

import kotlinx.android.synthetic.*

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多