Как создать окно EditText, которое открывает диалоговое окно при нажатии? - PullRequest
0 голосов
/ 30 мая 2020

Я пытаюсь создать поле EditView, которое используется как кнопка, которую вы нажимаете. Он открывает диалоговое окно с выбранными вами флажками, а затем вставляет выбранные параметры в текстовое представление через запятую. Например, диалоговое окно имеет следующие параметры:

Please select options:
[] Option1
[X] Option2
[] Option3
[X] Option4

Затем после выхода из диалогового окна в поле EditText появится:

Option2,Option4

Я создал EditText :

            <EditText
                android:id="@+id/text_data"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:hint="Add data"
                android:drawSelectorOnTop="true" />

И в настоящее время пустой диалог xml называется dialog_adding_data.xml. В файле Java у меня есть:

        EditText dataEditText = findViewById(R.id.text_data);
        dataEditText.setClickable(true);
        dataEditText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder mBuilder = new AlertDialog.Builder(AddData.this);
                View mView = getLayoutInflater().inflate(R.layout.dialog_adding_data,null);
                // Now what?
            }
        });

Но как мне продолжить? Как мне отображать данные в диалоговом окне и получать их при нажатии ОК? Кроме того, когда я нажимаю EditText, он по-прежнему открывает ключевое слово, поэтому я могу добавить текст (который мне не нужен). Его надо как-то заблокировать. Только диалоговое окно должно «добавлять» текст в поле EditText.

1 Ответ

0 голосов
/ 30 мая 2020

Вам необходимо получить данные из вашего диалогового окна предупреждения и установить текст редактируемого текста, например,

        dataEditText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder mBuilder = new AlertDialog.Builder(AddData.this);
                View mView = getLayoutInflater().inflate(R.layout.dialog_adding_data,null);
                // Now what?

                mBuilder.setView(mView)
                .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {
                   // Change the following to the view in your dialog that has the user data
                   EditText editText = (EditText) mView.findViewById(R.id.EDIT_TEXT_ID);

                   String value = editText.getText().toString();
                   dataEditText.setText(value);
                })
            }
        });

...