Метод в Kotlin должен возвращать логическое значение - PullRequest
0 голосов
/ 26 августа 2018

Я хочу отобразить домашний экран, когда нажимаю элемент навигации, который я назвал «Домой». Я не могу этого сделать, потому что метод должен возвращать тип, который является логическим.

override fun onOptionsItemSelected(item: MenuItem): Boolean {

    when (item.itemId) {
        R.id.nav_home ->
 // I want to display the home screen here
        else ->
            return super.onOptionsItemSelected(item)
    }
}

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

В Kotlin when statement вернет значение из выбранного оператора.

   return when (item.itemId) {
        R.id.nav_home ->
            // your code
            return true
        else ->
            return super.onOptionsItemSelected(item)
    }
0 голосов
/ 26 августа 2018

Вы можете просто разместить эту строку return super.onOptionsItemSelected(item) после when блока:

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    when (item.itemId) {
        R.id.nav_home ->
            // your code here
    }

    return super.onOptionsItemSelected(item)
}

Убедитесь, что вы включили все пункты меню в блок when.Таким образом, вы получите Boolean, возвращенный из метода.В своем вопросе вы упомянули элемент навигации, поэтому, если вы говорите о Навигационном ящике, вы должны реализовать onNavigationItemSelected(), а не onOptionsItemSelected()

override fun onNavigationItemSelected(item: MenuItem): Boolean {
    when (item.itemId) {
        R.id.miNavUsePassword ->
            // your code here
    }

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