Получение пользовательской строки во всплывающем диалоговом окне - PullRequest
3 голосов
/ 21 апреля 2011

В своем коде Android я раздуваю графический интерфейс и сохраняю все подэлементы в другом классе. В этом классе я хочу добавить метод для чтения пользовательского ввода. Я пытался следовать чему-то вроде этой ссылки , но что бы я ни делал, все сводится к копированию конечного значения в не конечное значение. Я думал о создании другого графического интерфейса, но не смог найти способ сделать это. Вот метод, который я имею сейчас:

private String setText(int id){
        AlertDialog.Builder alert = new AlertDialog.Builder(this.show);
        final EditText input = new EditText(this.show);
        alert.setView(input);
        String out;
        alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            //@Override
            public void onClick(DialogInterface dialog, int which) {
                Editable value = input.getText();
                out = value.toString();
                // TODO Auto-generated method stub

            }
        });

    }
}

, который я использую для возврата строки в другой метод, который устанавливает значение TextView.


Я пытался сделать следующий трюк:

private String setText(){

    AlertDialog.Builder alert = new AlertDialog.Builder(this.show);
    final EditText input = new EditText(this.show);
    alert.setView(input);
    String out;
    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {
            input.setText("canceled");
        }
    });
    alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {

        @Override
        public void onClick(DialogInterface dialog, int which) {


        }
    });
    alert.show();
    String toSend = input.getText().toString();
    this.maxT.setText(toSend);
    return toSend;

maxT - это поле TextView. Приложение просто поместит пустую строку. Я полагаю, что должен подождать, пока AlertDialog не закроется, я ищу способ сделать это.

Ответы [ 3 ]

6 голосов
/ 21 апреля 2011

Просто установите идентификатор вашего просмотра и сослаться на него:

private String setText(int id){
    AlertDialog.Builder alert = new AlertDialog.Builder(this.show);
    EditText input = new EditText(this.show);
    input.setId("myInput");        
    alert.setView(input);
    String out;
    alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
        //@Override
        public void onClick(DialogInterface dialog, int which) {
            EditText input = (EditText) dialog.findViewById("myInput");
            Editable value = input.getText();
            out = value.toString();               

        }
    });

}

}

Просмотр: setId () API

Диалоги onClick: API onClick ()

2 голосов
/ 22 апреля 2011

Вы можете создать собственный диалог и получить доступ к идентификатору таким образом. Если вы хотите использовать диалоговое окно предупреждения, вы можете попробовать это:

Сначала создайте макет с одним editText:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
<EditText android:text="Stateful"
android:id="@+id/EditText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</EditText>
</LinearLayout>

Затем надуйте этот макет как:

AlertDialog.Builder builder= new AlertDialog.Builder(this);
LayoutInflater inflater= getLayoutInflater();
final View myView= inflater.inflate(R.layout.alert_dialog_text_entry, null);
builder.setTitle("About");
builder.setMessage(alertMessage+"Version: "+versionName);
builder.setView(myView);
AlertDialog alert= builder.create();
0 голосов
/ 04 ноября 2013

Хорошее сообщение от Тони Старка здесь , и вы можете украсить свой диалог, добавив значок. Убедитесь, что у вас есть картинка в вашей папке для рисования.*

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...