Как перейти с одного 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
}

вот тут можно посмотреть и другие варианты решения.

→ Ссылка