Я хочу блокировать все взаимодействия с фрагментом, пока не произойдет обратный вызов.Блокирование взаимодействия пользовательского интерфейса с фрагментом
У меня есть две кнопки: ButtonA и ButtonB.
ButtonA показывает индикатор выполнения и запускает асинхронный поток, который обращается к фрагменту, когда это делается. Тем временем кто-то может нажать ButtonB, который я не хочу разрешать.
Моим решением было развернуть еще один фрагмент, который является прозрачным и перехватывает все клики. Однако, как представляется, существует задержка между FragmentManagers commit() и фактически работающим фрагментом.
Я пробовал вызывать executePendingTransactions(), но все же в конечном итоге возникают проблемы с потоками, из-за которых фрагмент не находится в состоянии, чтобы принимать события onClick до того, как пользователь нажал кнопку ButtonB.
Есть ли более элегантное решение?
Спасибо,
Джон
К сожалению, должны были быть указаны пользовательские представления, которые реализуют onClick, которые не выставляют setEnabled (bool) – johncc
Им следует выставить метод setEnabled. Все взгляды должны. – Snicolas
Итак, у вас есть пользовательский вид кнопки? Добавить метод setEnabled к его коду и переопределить метод onClick. @Snicolas - да, каждое представление должно выставлять setEnabled, но согласно android docs - «Интерпретация разрешенного состояния зависит от подкласса». –