我会像往常一样在操作栏中显示我的infinte进度条:
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
...
setProgressBarIndeterminateVisibility(true);
...
setProgressBarIndeterminateVisibility(false);
并且真正的工作是在后台线程(AsyncTask)
中完成的问题:UI上的所有控件都已启用,因此用户可以在持久过程完成之前继续修改基础数据。
无法简单地禁用所有控件,因为在禁用EditText时,Android也会自动关闭键盘。
如何在后台工作期间阻止用户输入的任何想法?
谢谢,
克里斯
答案 0 :(得分:7)
您可以做的是调出一个不可见的对话框,防止它被取消。它将显示其下的任何内容,但禁用所有基础用户交互。一旦你完成了你的业务,你只需解雇它并继续你的生活:
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();
答案 1 :(得分:5)
尝试progressDialog.setcancelable(false);
答案 2 :(得分:2)
您正尝试仅设置“活动属性”。而是使用。创建一个对话框 ProgressDialog,以便Ui无法访问
ProgressDialog dialog = ProgressDialog.show(this, "", "Please wait...", true);
编辑: 如果您不想使用ProgressDialog,请获取根布局并调用
layout.setEnabled(false)
答案 3 :(得分:1)
万一,如果其他人遇到同样的问题,
禁用编辑文字使用:EditText.setFocusable(false);
启用编辑:EditText.setFocusableInTouchMode(true);