且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

动态更改警报对话框中的按钮文本

更新时间:2023-01-23 19:52:46

您尝试过

Dialog dialog = builder.create();

afterTextChanged();

(AlertDialog)dialog.getButton(AlertDialog.BUTTON_POSITIVE).setText(yourString);

?

public class MenuFragment extends DialogFragment {

    private static final String VALID = "OK";
    private static final String INVALID = "Not OK";

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        final View layout = getActivity().getLayoutInflater().inflate(R.layout.dialog, null);
        final EditText et1 = (EditText) layout.findViewById(R.id.et1);
        final EditText et2 = (EditText) layout.findViewById(R.id.et2);

        builder.setView(layout)
        .setTitle(R.string.hello_world)
        .setMessage(R.string.hello_world)
        .setPositiveButton(INVALID, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                // Send the positive button event back to the host activity
                String strPassword1 = et1.getText().toString();
                String strPassword2 = et2.getText().toString();
                if (strPassword1.equals(strPassword2)) {
                    dialog.dismiss();
                } else{
                    dialog.dismiss();
                }
            }
        });

        final AlertDialog dialog = builder.create();

        TextWatcher watcher = new TextWatcher() {
            public void afterTextChanged(Editable s) {
                  String strPass1 = et1.getText().toString();
                  String strPass2 = et2.getText().toString();
                  if (strPass1.equals(strPass2)) {

                      dialog.getButton(DialogInterface.BUTTON_POSITIVE).setText(VALID);

                  } else {

                      dialog.getButton(DialogInterface.BUTTON_POSITIVE).setText(INVALID);

                  }
            }            
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
            public void onTextChanged(CharSequence s, int start, int before, int count) {}
         };


        et1.addTextChangedListener(watcher);
        et2.addTextChangedListener(watcher);

        return dialog;

    }

}