что является альтернативой в kotlin из (автозаполнение, когда я использую новый в Android Java) - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь реализовать seekBar1.setOnSeekBarChangeListener()

В Java я просто пишу ключевое слово new и автозаполнение помогает мне в реализации и знает, какой интерфейс мне нужно реализовать

есть ли такой способ в котлине или я должен помнить все эти интерфейсы

Я знаю, что в kotlin нет нового ключевого слова, но я спросил о том, как после написания объекта происходит автоматическое завершение объекта

Ответы [ 4 ]

0 голосов
/ 14 июня 2019

Kotlin не содержит нового ключевого слова. Так что да, согласно вашей дилемме, боль - это шея . Но он предоставляет вам автозаполнение!

Все, что вам нужно сделать, это сделать объект определенного интерфейса, а затем он выдаст вам ошибку о том, что не реализовал методы из этого, а затем с помощью команды Alt+Enter вы можете реализовать все методы из этого интерфейса.

В вашем случае просто наберите:

seekBar1.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {})

Который покажет вам ошибку компиляции в object ключевое слово.


Если ваш интерфейс имеет реализацию с одним методом, вы можете напрямую использовать Реализация Sam-constructor . То есть для прослушивателей кликов в Kotlin предоставляет вам прямое автозаполнение из предложений что-то вроде:

view.setOnClickListener { 
    //This is the same click listener we used to implement in our Java code 
}
0 голосов
/ 14 июня 2019

Используйте object для реализации интерфейса.

// Set a SeekBar change listener
        seek_bar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {

            override fun onProgressChanged(seekBar: SeekBar, i: Int, b: Boolean) {
                // Do something

            }

            override fun onStartTrackingTouch(seekBar: SeekBar) {
                // Do something

            }

            override fun onStopTrackingTouch(seekBar: SeekBar) {
                // Do something

            }
        })
0 голосов
/ 14 июня 2019

В kotlin нет ключевого слова new, просто не используйте его. Вы должны использовать object : для переопределения анонимных внутренних классов

seekBar.setOnSeekBarChangeListener(object :SeekBar.OnSeekBarChangeListener{
            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
            }

            override fun onStartTrackingTouch(seekBar: SeekBar?) {
            }

            override fun onStopTrackingTouch(seekBar: SeekBar?) {
            }

        })

См. Документы https://kotlinlang.org/docs/reference/object-declarations.html

0 голосов
/ 14 июня 2019

В kotlin используйте ключевое слово "object" для реализации интерфейса.

seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {

            }
            override fun onStartTrackingTouch(seekBar: SeekBar?) {

            }
            override fun onStopTrackingTouch(seekBar: SeekBar?) {

            }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...