view.setOnClickListener {
(activity as MainActivity).overlayImage()
}
Блок кода будет выполняться при нажатии view
.
overlay_frame.setOnClickListener {
// this is NOT called - why?
println("setOnClickListener executed 000")
Toast.makeText(this@MainActivity, "setOnClickListener hit!", Toast.LENGTH_SHORT).show()
overlay_frame.visibility = View.GONE
}
То же самое, кодовый блок будет выполняться при нажатии overlay_frame .
Согласно вставленному вами коду, вы просто щелкали при просмотре фрагмента, а затем снова и снова устанавливали прослушиватель щелчков в overlay_frame
. блок прослушивания клика overlay_frame
никогда не будет вызван, потому что событие клика не используется overlay_frame
.
Почему ваш overlay_frame
прослушиватель кликов не вызывается?
В вашем файле activity_main.xml
размер FrameLayout для вашей активности такой же, как и для FrameLayout фрагмента.
Поскольку макет фрагмента вложен в макет «Деятельность», вы устанавливаете прослушиватель щелчков при просмотре фрагмента, когда вы щелкаете по экрану, событие щелчка использовалось представлением фрагмента. поэтому вызывается метод activity.overlayImage()
. И событие, по которому щелкнули, не перейдет к overlay_frame
.
Вы можете создать событие щелчка для overlay_frame
view.setOnClickListener {
(activity as MainActivity).overlayImage()
// get the overlay_frame from the activity
val overlay_frame = activity.getOverlayImage()
overlay_frame.performClick()
}