Подтвердить что ты не робот

Android: как отключить элементы управления во время выполнения активной панели

Я покажу свою текущую полосу прогресса в панели действий "как обычно":

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
...
setProgressBarIndeterminateVisibility(true);
...
setProgressBarIndeterminateVisibility(false);

а реальная работа выполняется в фоновом потоке (AsyncTask)

Проблема: все элементы управления в пользовательском интерфейсе включены, поэтому пользователь может продолжать изменять базовые данные до завершения продолжительного процесса.

Простое отключение всех элементов управления невозможно, так как при отключении EditText также автоматически закрывается клавиатура Android.

Любые идеи о том, как предотвратить ввод пользователя во время работы фона?

Спасибо,

Крис

4b9b3361

Ответ 1

Что вы можете сделать, так это открыть невидимый диалог и не допускать его отмены. Он покажет все, что находится под ним, но отключит все основные пользовательские взаимодействия. Затем, как только вы закончите свой бизнес, вы просто отпустите его и продолжите свою жизнь:

Dialog mOverlayDialog = new Dialog(mContext, android.R.style.Theme_Panel); //display an invisible overlay dialog to prevent user interaction and pressing back
mOverlayDialog.setCancelable(false);
mOverlayDialog.show();  

Ответ 2

попробуйте поставить progressDialog.setcancelable(false);

Ответ 3

Вы пытаетесь установить только свойство Activity. Вместо этого выполните диалог, используя ProgressDialog, чтобы Ui не был доступен

ProgressDialog dialog = ProgressDialog.show(this, "", "Please wait...", true);

Изменить: Если вы не хотите использовать ProgressDialog, получите Root Layout и вызовите

layout.setEnabled(false)

Ответ 4

в случае, если кто-то другой столкнулся с одной и той же проблемой,

чтобы отключить редактирование текста: EditText.setFocusable(false);

чтобы включить редактирование: EditText.setFocusableInTouchMode(true);