findNavController (). navigate (direction) не работает для View.OnLongClickListener, но работает для View.OnClickListener - PullRequest
0 голосов
/ 27 ноября 2018

Android-разработчик Canary 3.4, котлин.

Обнаружено, что View.OnLongClickListener выдает несоответствие типов.Разве View.OnLongClickListener не учитывается для нового навигационного графика в Android?

private fun createOnClickListener(stationId: String): View.OnClickListener
{
    return View.OnClickListener {
        val direction = StationListFragmentDirections.ActionStationListFragmentToStationDetailFragment(stationId)
        it.findNavController().navigate(direction)
    }
}

private fun createOnLongClickListener(stationId: String, kindId: String): View.OnLongClickListener
{
    return View.OnLongClickListener {
        val direction = StationListFragmentDirections.ActionStationListFragmentToUpdatePriceFragment(stationId,kindId)
        it.findNavController().navigate(direction)   // <--- Gives error here
    }
}

Вышеупомянутые две функции должны вести себя одинаково, но нижняя (createOnLongClickListener) выдает ошибку «Несоответствие типов» длянаправление'.

Не добавлена ​​ли поддержка навигации для View.OnLongClickListener?

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Нашел ответ.OnLongClickListener действительно нуждается в ответе, если запрос обрабатывается:

private fun createOnLongClickListener(stationId: String, kindId: String): View.OnLongClickListener
{
    return View.OnLongClickListener {
        val direction = StationListFragmentDirections.ActionStationListFragmentToUpdatePriceFragment(stationId,kindId)
        it.findNavController().navigate(direction)
        true   // <--- Add true here to confirm it is handled
    }
}

... чудеса котлина ...;)

0 голосов
/ 27 ноября 2018

View.OnLongClickListener нужен тип возвращаемого значения как Boolean

Пример:

val longClick = View.OnLongClickListener {

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