У меня есть проблема с моим приложением. Я пытаюсь решить ее 2 дня назад, но ничего не могу найти об этом.
Почти каждая кнопка во фрагменте, которая динамически добавляется в мою активностьOnCreate не кликабельны для некоторых пользователей. Никто в моей команде не сталкивался с этой проблемой, поэтому я обратился к пользователю с ошибкой и провел с ним тест, и вот результаты:
Если он нажимает только один раз, кнопка не работает, но если он спамит ееКнопка иногда срабатывает. Я также поместил некоторые отладки в его версию, и это то, что я нашел:
user_hud_main_button.setOnTouchListener { v, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> report += "down;"
MotionEvent.ACTION_UP -> report += "up;"
}
false
}
user_hud_main_button.setOnClickListener {
report += "click;"
toggleMainButton()
Analytics.send(Event.Type.BtnAddMain)
}
edit: setOnTouchListener был добавлен только для целей отладки при работе над проблемой
в то время как на моемтестовые телефоны я получаю:
вниз; вверх; нажмите; вниз; вверх; нажмите; вниз; вверх; нажмите;
пользователь получает:
вниз; вверх; вниз; вверх; вниз; вверх; вниз; вверх;
События вверх и вниз отправляются корректно, но не по щелчку. Почему это происходит и почему только для нескольких пользователей?
Вот макет действия:
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:name="com.hulab.mapstr.newArch.MapFragment"
android:id="@+id/activity_map_fragment_map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
...
<FrameLayout
android:id="@+id/activity_map_hud_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<!-- Bottom drawer -->
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/main_bottom_sheet"></include>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
код активности:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
supportFragmentManager.beginTransaction().add(R.id.activity_map_hud_container, UserHUDFragment()).commit()
...
}
UserHUDFragment:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
...
user_hud_main_button.setOnClickListener {
toggleMainButton()
Analytics.send(Event.Type.BtnAddMain)
}
...
}
UserHUD макет:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/user_hud">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/user_hud_current_map_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/user_hud_main_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:elevation="1dp"
app:fabSize="normal"
app:useCompatPadding="true"
android:src="@drawable/add_fab_button" />
...
</androidx.constraintlayout.widget.ConstraintLayout>
...
</androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>
Заранее спасибо и извините за мой английский