「いつものように」アクションバーに無限のプログレスバーを表示します。
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
...
setProgressBarIndeterminateVisibility(true);
...
setProgressBarIndeterminateVisibility(false);
実際の作業はバックグラウンドスレッドで行われます(AsyncTask)
問題:UIのすべてのコントロールが有効になっているため、ユーザーは、長期にわたるプロセスが終了する前に、基になるデータを変更し続けることができます。
EditTextを無効にすると、Androidによってキーボードも自動的に閉じられるため、すべてのコントロールを単に無効にすることはできません。
バックグラウンド作業中にユーザー入力を防ぐ方法はありますか?
ありがとう、
クリス
あなたができることは、目に見えないダイアログを表示し、それがキャンセルできないようにすることです。その下にあるものはすべて表示されますが、基礎となるすべてのユーザー操作が無効になります。それからあなたがあなたのビジネスを終えたら、あなたは単にそれを却下してあなたの人生を続けます:
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();
progressDialog.setcancelable(false);
を入れてみてください
アクティビティのプロパティのみを設定しようとしています。代わりに、ProgressDialogを使用してダイアログを表示し、Uiにアクセスできないようにします。
ProgressDialog dialog = ProgressDialog.show(this, "", "Please wait...", true);
編集:ProgressDialogを使用したくない場合は、ルートレイアウトを取得して呼び出します
layout.setEnabled(false)
万が一、他の誰かが同じ問題に直面した場合、
テキストの編集を無効にするには、次を使用します:EditText.setFocusable(false);
編集を有効にするには:EditText.setFocusableInTouchMode(true);