1

iOSでは、画面全体に表示されるだけで、ユーザーからの操作を無効にすることができます。

これは、特定の操作(保存、リクエストなど)中にプログレスバー/スピナーと組み合わせて使用​​されます。

Androidでこれを行うための最良の方法は何ですか?View /*Layoutを使用して画面を埋めてみました。見た目は同じですが、ユーザーのタッチイベントをブロックしません。

現在、私は上記のアプローチを使用しており、2つの関数{disableUI、resetUI}があります。しかし、それはかなり面倒です。

私が考えていないより良いアプローチはありますか?乾杯。

4

2 に答える 2

2

FragmentDialogまたはDialog(廃止されたAPIを使用している場合)を使用する必要があります。

これが例です

public class ProgressDialogFragment extends DialogFragment {

    // ----------------------------------
    // CONSTANTS
    // ----------------------------------
    private static final String BUNDLE_KEY_TITLE = "BUNDLE_KEY_TITLE";
    private static final String BUNDLE_KEY_MESSAGE = "BUNDLE_KEY_MESSAGE";

    // ----------------------------------
    // ATTRIBUTES
    // ----------------------------------
    private String title;
    private String message;

    // ----------------------------------
    // PUBLIC METHODS
    // ----------------------------------
    public static ProgressDialogFragment newInstance(String title) {
        return createProgressDialogFragment(title, null);
    }

    public static ProgressDialogFragment newInstance(String title, String message)  {
        ProgressDialogFragment fragment = new ProgressDialogFragment();
        Bundle bundle = new Bundle();
        bundle.putString(BUNDLE_KEY_TITLE, title);
        bundle.putString(BUNDLE_KEY_MESSAGE, message);
        fragment.setArguments(bundle);
        return fragment;
    }

    // ----------------------------------
    // LIFE CYCLE
    // ----------------------------------

    @Override
    public Dialog onCreateDialog(final Bundle savedInstanceState) {
        final ProgressDialog dialog = new ProgressDialog(getActivity());
        // get params from the bundle
        if (getArguments() != null) {
            this.title = getArguments().getString(BUNDLE_KEY_TITLE);
            this.message = getArguments().getString(BUNDLE_KEY_MESSAGE);
        }
        dialog.setTitle(this.title);
        dialog.setMessage(this.message);
        dialog.setIndeterminate(true);
        dialog.setCancelable(false);
        return dialog;
    }
}
于 2013-03-15T10:03:00.427 に答える
0

通常ProgressDialogを使用して、キャンセル可能をfalseに設定できます。下記参照

ProgressDialog progDailog = ProgressDialog.show(_context,
            progressString, "Please wait...",
            true);
progDailog.setCancelable(false);

ただし、別のスレッドで実行する必要があります。AsyncTask望ましい

于 2013-03-15T10:07:08.340 に答える