首页 > 解决方案 > 如果在 Kotlin 中删除额外的

问题描述

如何删除下面代码中的if (savedInstanceState != null)并全部使用?和 !!

override fun onViewStateRestored(savedInstanceState: Bundle?) {
        super.onViewStateRestored(savedInstanceState)
        if (savedInstanceState != null)
            search_bar.visibility =
                    if (savedInstanceState.getBoolean("showSearchBar", false)) View.VISIBLE else View.GONE
    }

标签: androidkotlinnullable

解决方案


您可以使用安全访问?.并将savedInstanceState为空的布尔值与true

val showSearchBar = savedInstanceState?.getBoolean("showSearchBar", false) == true
search_bar.visibility = if (showSearchBar) View.VISIBLE else View.GONE

请注意,即使savedInstanceState为空,这也会隐藏搜索栏,因此它的行为与最初的行为略有不同,尽管它似乎是所需的行为,因为您false默认传递为getBoolean反正。

顺便说一句,Android KTX有一个View.isVisible扩展属性,可以让你这样写:

search_bar.isVisible =
    savedInstanceState?.getBoolean("showSearchBar", false) == true

推荐阅读