public void input(final InputOptions options, final Consumer<String> okayListener) {

         final InputOptions io = options == null ? new InputOptions() : options;

         final Pair<AlertDialog, SimpleDialogViewBinding> dialogBinding = constructCommons();
         final EditText textField = dialogBinding.second.dialogInputEdittext;
         final TextInputLayout textLayout = dialogBinding.second.dialogInputLayout;
         final AlertDialog dialog = dialogBinding.first;
         textField.setVisibility(View.VISIBLE);
         textLayout.setVisibility(View.VISIBLE);

         textField.setInputType(io.inputType);
         if (io.initialValue != null) {
             textField.setText(io.initialValue);
         }
         if (io.hint != null) {
             textField.setHint(io.hint);
         }
         if (io.label != null) {
             textLayout.setHint(io.label);
         }
         if (io.suffix != null) {
             textLayout.setSuffixText(io.suffix);
         }

        if (io.inputChecker != null) {
            textField.addTextChangedListener(ViewUtils.createSimpleWatcher(editable ->
                    inputExecuteChecker(dialog, io.inputChecker, editable)
            ));
        }
        if (io.allowedChars != null) {
            final Pattern charPattern = Pattern.compile(io.allowedChars);
            textField.setFilters(new InputFilter[]{
                    (source, start, end, dest, dstart, dend) -> {
                        for (int i = start; i < end; i++) {
                            if (!charPattern.matcher("" + source.charAt(i)).matches()) {
                                return "";
                            }
                        }
                        return null;
                    }
            });
        }
        // force keyboard
        Keyboard.show(getContext(), textField);

        dialog.show();

        finalizeCommons(dialog, which -> {
            if (which == DialogInterface.BUTTON_POSITIVE && okayListener != null) {
                // remove whitespaces added by autocompletion of Android keyboard before calling okayListener
                final String realText = ViewUtils.getEditableText(textField.getText()).trim();
                okayListener.accept(realText);
                dialog.dismiss();
                return true;
            }
            return false;
        });

        inputExecuteChecker(dialog, io.inputChecker, io.initialValue);
        Dialogs.moveCursorToEnd(textField);
    }
Use this method to create and display an 'input' dialog using the data defined before using this classes' setters
<p>
An 'input' dialog allows the user to enter a value.
main/src/main/java/cgeo/geocaching/ui/dialog/SimpleDialog.java