0

AlertDialog の OK ボタンを無効にしたい。以下のコードを使用してみました。しかし、NPEを取得

alertDialogBuilder = new AlertDialog.Builder(getActivity());
alertDialogBuilder.setView(view);
alertDialogBuilder.setPositiveButton(android.R.string.ok, this);
alertDialogBuilder.setNegativeButton(android.R.string.cancel, this);
alertDialog = alertDialogBuilder.create();

Button positive = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
positive.setEnabled(false);

ボタンの正が null になります。

4

3 に答える 3

0

ニューラルボタンを使うだけ

  final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(super.mContext);
    dialogBuilder.setTitle(
            super.mContext.getResources().getString(R.string.FAVORITE_RENAME_DIALOG_TITLE));
    dialogBuilder.setMessage(
            super.mContext.getResources().getString(R.string.FAVORITE_RENAME_DIALOG_MESSAGE));

    final EditText input = new EditText(super.mContext);

    input.setInputType(
            InputType.TYPE_TEXT_FLAG_CAP_WORDS | InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE);
    input.setText(name);
    input.setSelectAllOnFocus(true);
    input.setHint(super.mContext.getResources().getString(R.string.FAVORITE_DIALOG_HINT));
    input.setFilters(
            new InputFilter[]{new DialogInputFilter(), new InputFilter.LengthFilter(20)});

    dialogBuilder.setView(input);

    dialogBuilder.setNeutralButton(
            super.mContext.getResources().getString(R.string.FAVORITE_RENAME_DIALOG_POSITIVE),
            new UpdateFavoriteListNameOnClickListener(name, favListId, input,
                    (Activity) super.mContext, this)
    );

    dialogBuilder.setNegativeButton(
            super.mContext.getResources().getString(R.string.FAVORITE_DIALOG_NEGATIVE),
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog,
                        int whichButton) {

                }
            }
    );

ここで Create() 最初に alertDialog を取得し、 Button を取得して、必要なことを行います... im MinLength Validation にそれを使用する

    dialogBuilder.create();
    final AlertDialog alertDialog =  dialogBuilder.show();
    Button button = ((AlertDialog)alertDialog).getButton(AlertDialog.BUTTON_NEUTRAL);

    input.addTextChangedListener(new TextMinLengthValidator(input, button) {
        @Override
        public void validate(EditText input, Button button) {
            if (input.getText().length() < ConfigurationProvider.getConfig().getMinFavoriteNameLength() && button != null) {
                button.setEnabled(false);
                input.setError(mContext.getResources().getString(R.string.FAVORITE_DIALOG_LENGTH_NEGATIVE));
            } else if(button != null) {
                button.setEnabled(true);
                input.setError(null);
            }
        }
    });
于 2014-07-25T15:31:32.557 に答える
0

この方法でボタンを設定すると、ボタンが 1 つだけ表示されます。

alertDialogBuilder = new AlertDialog.Builder(getActivity());
alertDialogBuilder.setView(view);
alertDialog = alertDialogBuilder.create();

    alertDialog.setButton(android.R.string.cancel,
                    new DialogInterface.OnClickListener() {

                        @Override
                        public void onClick(DialogInterface dialog, int arg1) {
                            dialog.dismiss();

                        }
                    });
于 2012-10-20T15:10:27.663 に答える
0

私は道を見つけました。重要な点は、警告ダイアログを表示した後、有効/無効の操作を行うだけです。ダイアログを無効にするために、以下のコードを使用しました。

alertDialog.setOnShowListener(new OnShowListener() {

            @Override
            public void onShow(DialogInterface dialog) {

                Button positive = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
                positive.setEnabled(false);

            }
        });
于 2012-10-20T15:16:53.760 に答える