Справочное представление отмены ссылки

Я новичок в Kotlin и не знаю, как исправить эту ошибку: Неразрешенная ссылка: view. Моя цель - нажать кнопку, чтобы перейти к другому действию. Копирую код:

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        findViewById<Button>(R.id.button).setOnClickListener{
            sendMessage(view)
        }



    }

    val EXTRA_MESSAGE = "com.example.monedas.MESSAGE"
    fun sendMessage(it: view) {
        val intent = Intent(this, ListActivity::class.java)
        val editText : TextView = findViewById(R.id.textView4)
        val message = editText.text.toString()
        intent.putExtra(EXTRA_MESSAGE, message)
        startActivity(intent)
    }


}
0
0
542
1

Ответы 1

Вы передаете неопределенный параметр в функцию sendMessage().
Вы нигде не объявляли эту переменную view.
Но похоже, что вам это не нужно, как не нужен аргумент it of sendMessage().
Итак, измените на:

fun sendMessage() {
    val intent = Intent(this, ListActivity::class.java)
    val editText : TextView = findViewById(R.id.textView4)
    val message = editText.text
    intent.putExtra(EXTRA_MESSAGE, message)
    startActivity(intent)
}

и назовите это так:

findViewById<Button>(R.id.button).setOnClickListener{
    sendMessage()
}


В качестве примечания:
В Kotlin вам не нужно использовать findViewById(), если вы хотите получить доступ к View раздутого макета в своем классе активности.
Просто убедитесь, что вы импортировали:

import kotlinx.android.synthetic.main.activity_main.*

и тогда вы можете просто сделать:

button.setOnClickListener{ sendMessage() }

и в sendMessage():

fun sendMessage() {
    val intent = Intent(this, ListActivity::class.java)
    intent.putExtra(EXTRA_MESSAGE, textView4.text)
    startActivity(intent)
}

Другие вопросы по теме