Как перейти с одного Activity в другое Activity при долгом нажатии на текст (НЕ КНОПКА)?
Мне нужно чтобы ТОЛЬКО при долгом нажатии на текст "Hello World!" (где-то 3-5 сек.) одно Activity переходило в другое.
Ответы (2 шт):
Автор решения: Barmaley
→ Ссылка
Что то типа такого:
textView.setOnLongClickListener(v -> {blah-blah})
Автор решения: Andrew
→ Ссылка
По факту у вас есть возможность использовать стандартный метод:
view.setOnLongClickListener{
Toast.makeText(this, "Long click detected", Toast.LENGTH_SHORT).show()
true
}
но его продолжительность где-то 500ms (первоисточник + доки). Если же вам нужно принципиально ждать 3-5 секунды, то вам данный способ не подойдет. Можно использовать например такую конструкцию:
fun View.setOnVeryLongClickListener(listener: () -> Unit) {
setOnTouchListener(object : View.OnTouchListener {
private val longClickDuration = 2000L
private val handler = Handler()
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
if (event?.action == MotionEvent.ACTION_DOWN) {
handler.postDelayed({ listener.invoke() }, longClickDuration)
} else if (event?.action == MotionEvent.ACTION_UP) {
handler.removeCallbacksAndMessages(null)
}
return true
}
})
}
и вызывать метод:
view.setOnVeryLongClickListener {
// Do something here
}
вот тут можно посмотреть и другие варианты решения.