Кнопки не работают снова после нажатия

Код: MainActivity:

tasks.setOnClickListener() { tasks_window.visibility = View.VISIBLE }
home.setOnClickListener() { user_window.visibility = View.VISIBLE }
east.setOnClickListener() { feed_window.visibility = View.VISIBLE }
news.setOnClickListener() { news_window.visibility = View.VISIBLE }
dailybook.setOnClickListener() { dailybook_window.visibility = View.VISIBLE }

requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;

if (tasks_window.visibility == View.VISIBLE)
    dailybook_window.visibility = View.GONE
feed_window.visibility = View.GONE
news_window.visibility = View.GONE
user_window.visibility = View.GONE

if (dailybook_window.visibility == View.VISIBLE)
    tasks_window.visibility = View.GONE
feed_window.visibility = View.GONE
news_window.visibility = View.GONE
user_window.visibility = View.GONE

if (feed_window.visibility == View.VISIBLE)
    tasks_window.visibility = View.GONE
dailybook_window.visibility = View.GONE
news_window.visibility = View.GONE
user_window.visibility = View.GONE

if (news_window.visibility == View.VISIBLE)
    tasks_window.visibility = View.GONE
feed_window.visibility = View.GONE
dailybook_window.visibility = View.GONE
user_window.visibility = View.GONE

if (user_window.visibility == View.VISIBLE)
    tasks_window.visibility = View.GONE
feed_window.visibility = View.GONE
news_window.visibility = View.GONE
dailybook_window.visibility = View.GONE

Ответы (1 шт):

Автор решения: Circassian

Такое ощущение, что вы пришли из пайтона. В котлине, если нет фигурных скобок, то при верности условия выполнится только следующая за условием строка. Поэтому, все строки, выделенные табуляцией, нужно включать в фигурные скобки.

Рассмотрим первый блок

Вместо этого:

if (tasks_window.visibility == View.VISIBLE)
    dailybook_window.visibility = View.GONE
    feed_window.visibility = View.GONE
    news_window.visibility = View.GONE
    user_window.visibility = View.GONE

Нужно сделать так:

if (tasks_window.visibility == View.VISIBLE) {
    dailybook_window.visibility = View.GONE
    feed_window.visibility = View.GONE
    news_window.visibility = View.GONE
    user_window.visibility = View.GONE
}

Потому-что если условие if (tasks_window.visibility == View.VISIBLE) верное, выполнится только следующая строка:

dailybook_window.visibility = View.GONE

А остальные 3 строки будут выполняться ВСЕГДА!

→ Ссылка