«Абстрактный элемент не может быть доступен напрямую» для KeyEvent

#android #kotlin #android-softkeyboard

#Android #kotlin #android-softkeyboard

Вопрос:

Я внедряю прослушиватель ключей, чтобы определять, когда кто-то нажимает пробел:

 class MapFragment : Fragment(), View.OnClickListener, KeyEvent.Callback {

    override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
        return when (keyCode) {
            KeyEvent.KEYCODE_DEL -> {
                enterCode1.text?.clear()
                enterCode2.text?.clear()
                enterCode3.text?.clear()
                enterCode3?.isEnabled = true
                enterCode2?.isEnabled = true
                enterCode1?.isEnabled = true
                enterCode1?.requestFocus()
                true
            }
            else -> super.onKeyUp(keyCode, event)
        }
    }
}
  

Несмотря на то, что я взял точный образец из документации super.onKeyUp(keyCode, event) возвращает следующую ошибку компилятора:

 Abstract member cannot be accessed directly
  

Почему это?

Комментарии:

1. Поскольку у вас нет никакой функции с именем onKeyUp в Fragment , это абстрактный метод, предоставляемый KeyEvent.Callback вами, который вы переопределяете. Существует onKeyUp , в Activity котором упоминался этот документ.

2. Хорошо, спасибо. Как я могу вызвать super on onKeyUp в моем фрагменте? @AnimeshSahu

3. Во фрагменте нет суперфункции, вызываемой onKeyUp