14

「いつものように」アクションバーに無限の進行状況バーを表示します。

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

実際の作業はバックグラウンド スレッド (AsyncTask) で行われます。

問題: UI 上のすべてのコントロールが有効になっているため、長期にわたるプロセスが終了する前に、ユーザーが基になるデータを変更し続けることができます。

EditText を無効にすると、キーボードも Android によって自動的に閉じられるため、単にすべてのコントロールを無効にすることはできません。

バックグラウンド作業中にユーザー入力を防ぐ方法はありますか?

ありがとう、

クリス

4

4 に答える 4

9

できることは、非表示のダイアログを表示して、キャンセルできないようにすることです。その下にあるものはすべて表示されますが、基本的なユーザー操作はすべて無効になります。次に、ビジネスが終わったら、単にそれを却下して、自分の人生を続けます。

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();  
于 2014-09-01T08:20:48.763 に答える
5

入れてみるprogressDialog.setcancelable(false);

于 2012-09-06T13:11:15.633 に答える
2

アクティビティのプロパティのみを設定しようとしています。代わりに、ProgressDialogを使用してダイアログを表示し、Uiにアクセスできないようにします

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

編集:ProgressDialogを使用したくない場合は、ルートレイアウトを取得して呼び出します

layout.setEnabled(false)
于 2012-09-06T13:15:02.717 に答える
1

万が一、他の誰かが同じ問題に直面した場合、

テキストの編集を無効にするには:EditText.setFocusable(false);

編集を有効にするには:EditText.setFocusableInTouchMode(true);

于 2014-10-01T21:28:14.007 に答える