Оптимизация обработчика событий

Есть MainActivity, в которой обрабатываются нажатия на кнопки (приведу простой пример):

crc_add.setOnClickListener {
            startActivity(Intent(this, AddPostActivity::class.java))
        }

Также есть функции:

private fun moveToFragmentProfile(fragment: Fragment)
    {
        val fragmentTrans = supportFragmentManager.beginTransaction()
        fragmentTrans.replace(R.id.fragment_container_profile, fragment)
        fragmentTrans.commit()

        notifications_content_btn?.visibility = View.VISIBLE
        search_content_btn?.visibility = View.VISIBLE
    }

private fun visibleButtons() {
        semicircle?.visibility = View.GONE
        circle?.visibility = View.GONE
        circle_small?.visibility = View.GONE
        circle_search?.visibility = View.GONE
        circle_notifications?.visibility = View.GONE
        circle_add_post?.visibility = View.GONE
        smooth_bg?.visibility = View.GONE
    }

Есть и такие обработчики (при нажатии кнопки не просто происходит какое-то действие, а срабатывает функция):

profile_content_btn.setOnClickListener {
            moveToFragmentProfile(ProfileFragment())
            srcBtn.setImageResource(R.drawable.search)
            ntfBtn.setImageResource(R.drawable.notifications)
            profile_content_btn.visibility = View.GONE
            visibleButtons()
        }

Я бы хотел создать отдельный kotlin-файл, в котором бы хранились эти обработчики, а в самой активити просто оставлять некую ссылку на этот файл при нажатии на кнопку. Как я могу это реализовать?


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

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

Можешь унаследоваться от ClickLisnera. Но что бы иметь в нем доступ к вьюшкам, их(вьюшки) нужно будет передавать в конструктор.

→ Ссылка