#android #kotlin
Вопрос:
При двойном нажатии на таймер обратного отсчета я хочу, чтобы он открывал полноэкранное действие.
countDownTimer.setOnClickListener(object : DoubleClickListener() {
override fun onDoubleClick(v: View?) {
Toast.makeText(applicationContext,"Full Screen Mode!",Toast.LENGTH_SHORT).show()
val screenFull = Intent(this, FullScreen::class.java) //The Intent on this line is presenting an error
startActivity(screenFull)
}
})
} //This bracket is from OnCreate
abstract class DoubleClickListener : View.OnClickListener {
var lastClickTime: Long = 0
override fun onClick(v: View?) {
val clickTime = System.currentTimeMillis()
if (clickTime - lastClickTime < DOUBLE_CLICK_TIME_DELTA) {
onDoubleClick(v)
}
lastClickTime = clickTime
}
abstract fun onDoubleClick(v: View?)
companion object {
private const val DOUBLE_CLICK_TIME_DELTA: Long = 300 //milliseconds
}
}
Приведенный выше код выдает следующую ошибку при компиляции кода.
Ни одна из следующих функций не может быть вызвана с предоставленными аргументами: Намерение открытого конструктора(p0: Контекст!, p1: Класс<*>!), определенное в android.content.Намерение Намерение публичного конструктора(p0: Строка!, p1: Uri!), определенное в файле android.content.Намерение
Как я мог это исправить? Спасибо.
Ответ №1:
Замените эту строку
val screenFull = Намерение(это, FullScreen::class.java)
С:
val screenFull = Намерение(это@YourActivityName, FullScreen::class.java)
Это устранит вашу проблему.
Ответ №2:
Это говорит о том, что аргументы , которые вы передаете, this
и Class
, не соответствуют ни одному из конструкторов. Это потому this
, что относится к вашему DoubleClickListener
объекту, а не к Activity
(или к тому, что Context
вы хотите передать)
Если вы удалите часть this
и начнете ее перепечатывать, это должно предоставить вам параметры автозаполнения для внешних объектов, которые вы можете видеть из этой области. this@MyActivity
или что — то еще, вероятно, то, что вы хотите.
Кроме того, на случай, если вы не знали, есть GestureDetector
класс, в котором вы можете установить прослушиватель с двойным нажатием. Вот как вы можете добавить пустую реализацию, чтобы вам нужно было только переопределить обратные вызовы, которые вы хотите прослушать: https://developer.android.com/training/gestures/detector#detect-a-subset-of-supported-gestures