Как получить строковое значение только при нажатии кнопки «ОК» в диалоговом окне ввода текста? - PullRequest
0 голосов
/ 23 января 2012

Я сделал функцию taketext (), которая возвращает строковое значение введенного текста в диалоговом окне ввода текста. Ниже приведен код (который, очевидно, неверен). Я хочу, чтобы эта строка возвращалась только при нажатии кнопки «ОК». Если 'if' удалено, то оно всегда возвращает ноль. Этот метод takeText () вызывается другим методом.

private String takeText() {
    String text = null;
    LayoutInflater inflater = LayoutInflater.from(this);
    View addView = inflater.inflate(R.layout.text_tag, null);
    final DialogWrapper wrapper = new DialogWrapper(addView);

    new AlertDialog.Builder(this)
            .setTitle("Enter Text")
            .setView(addView)
            .setPositiveButton("ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    // processAdd(wrapper);
                    // text = wrapper.getData();
                    okBClicked = true;

                }
            })
            .setNegativeButton("cancel",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,
                                int whichButton) {
                            // ignore, just dismiss
                        }
                    }).show();
    if (okBClicked)
        return wrapper.getData();
    else
    //???
}

1 Ответ

0 голосов
/ 23 января 2012

Не заставляйте свой метод возвращать строку.Код, чтобы показать всплывающее окно для ввода строки.Позже вы должны получить ссылку на ваш EditText, определенный в R.layout.text_tag, и получить его значение в событии click PositiveButton.например:

String text = null;

private void popToTakeText() {
    LayoutInflater inflater = LayoutInflater.from(this);
    View addView = inflater.inflate(R.layout.text_tag, null);

    EditText txtBox = addView.findViewById(R.id.my_edit_text_box);

    final DialogWrapper wrapper = new DialogWrapper(addView);

    new AlertDialog.Builder(this)
            .setTitle("Enter Text")
            .setView(addView)
            .setPositiveButton("ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    // processAdd(wrapper);
                    // text = wrapper.getData();
                    okBClicked = true;
                    text = txtBox.getText();

                }
            })
            .setNegativeButton("cancel",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,
                                int whichButton) {
                            // ignore, just dismiss
                        }
                    }).show();

}
...