Как я могу изменить свой код в Kotlin без Casting? - PullRequest
0 голосов
/ 20 января 2020

Я хочу знать, Как я могу написать код без приведения активности как фрагмент? ....

--------- Фрагмент

        tempMainImage.setOnClickListener {
            val message = "how are you today"

            (activity as? MainActivity).let {
                it?.onReplaceTtsFragment(message)
            }
        }

---------- MainActivity

fun onCloseTtsFragmentLayout() {
        detailFragmentLayout.visibility = View.GONE
    }

    fun onReplaceTtsFragment(message: String) {
        supportFragmentManager.beginTransaction().replace(R.id.detailFragmentLayout, TtsDetailFragment.newInstance(message, ::onCloseTtsFragmentLayout)).commit()

        detailFragmentLayout.visibility = View.VISIBLE
    }

Ответы [ 2 ]

0 голосов
/ 20 января 2020

is является kotlin заменой instanceof в java


tempMainImage.setOnClickListener {
    val message = "how are you today"

    if(activity is MainActivity) {
        activity?.onReplaceTtsFragment(message)
    }
}
0 голосов
/ 20 января 2020

почему бы не попробовать использовать блок when и ключевое слово is.

tempMainImage.setOnClickListener {
    val message = "how are you today"

    when (activity) {
        is MainActivity -> activity.onReplaceTtsFragment(message)
        else -> return
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...