Убрать лишнее если в Котлине - PullRequest
0 голосов
/ 28 февраля 2019

Как я могу удалить if (saveInstanceState! = 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
    }

1 Ответ

0 голосов
/ 28 февраля 2019

Вы можете использовать безопасный доступ ?. на savedInstanceState и . Сравните nullable Boolean с 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
...