Метод не находится, хотя он публичный (Kotlin)
В Kotlin, насколько я понимаю (только учусь), если не указано обратное, метод публичен. У меня метод setOnClickListener никаких подробностей не имеет, но, тем не менее, XML при попытке привязать его к кнопке найти его не может:
Corresponding method handler '
public void setOnClickListener(android.view.View)' not found
Как сделать setOnClickListener видимым? Код ниже
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val button: Button = findViewById(R.id.button)
button.setOnClickListener {
val projectDirAbsolutePath = Paths.get("").toAbsolutePath().toString()
val resourcesPath = Paths.get(projectDirAbsolutePath, "/0/storage/emulated/tmp")
val paths = Files.walk(resourcesPath)
.forEach { item -> FileWriter("/0/storage/emulated/jjj.txt").use { it.write("$item") } }
}
}
}
Ответы (1 шт):
Методы да, по умолчанию публичные. Но вы путаете объявление своего метода с вызовом уже имеющегося, куда вы передаёте экземпляр аномимного класса в виде лямбды.
Если опустить то, что указывать метод клика через разметку не стоит (если вы не используете data-binding) вам надо объявить в классе активити новый метод и на него ссылаться в разметке. Что, опять таки, может быть излишним, т.к. у вас в коде слушатель клика и так уже повешен на кнопку программно. Т.е. можно просто из разметки удалить его и всё будет работать.