|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.12.2020, 11:47 | #1 |
Новичок
Джуниор
Регистрация: 02.12.2020
Сообщений: 1
|
Класс для AlertDialog
!!!Кто знает почему? Как это спасти?:
Хочу сделать так, чтобы у меня в классе Dialog был метод с AlertDialog в котором есть поле ввода текста, и при нажатии на кнопку ОК введенный текс записывался в поле для ввода текста на главном экране. Если я прописываю метод для этого AlertDialog в основном классе, то всё работает. --------------------------------------------------------------------------------------------------- public class MainActivity extends AppCompatActivity { EditText etMain; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ma in); etMain = findViewById(R.id.etMain); } public void onClick_btnStart(View view) { //Dialog dialog = new Dialog(); //dialog.customerDialog(R.layout.dial og, R.id.etInput, etMain); customerDialog(R.layout.dialog, R.id.etInput, etMain); } public void customerDialog (@LayoutRes int resource, @IdRes int id, EditText et ){ AlertDialog.Builder builder = new AlertDialog.Builder(this); ConstraintLayout cl = (ConstraintLayout) getLayoutInflater().inflate(resourc e, null); builder.setView(cl); builder.setPositiveButton("ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { AlertDialog alertDialog = (AlertDialog) dialog; EditText inputText = alertDialog.findViewById(id); assert inputText != null; et.setText(inputText.getText().toSt ring()); dialog.dismiss(); } }); builder.show(); } } --------------------------------------------------------------------------------------------------- Если же выношу его в отдельный класс, то при нажатии на кнопку старт приложение вылетает. --------------------------------------------------------------------------------------------------- public class MainActivity extends AppCompatActivity { EditText etMain; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ma in); etMain = findViewById(R.id.etMain); } public void onClick_btnStart(View view) { Dialog dialog = new Dialog(); dialog.customerDialog(R.layout.dial og, R.id.etInput, etMain); //customerDialog(R.layout.dialog, R.id.etInput, etMain); } --------------------------------------------------------------------------------------------------- package com.example.test_dialog; import android.content.DialogInterface; import android.os.Bundle; import android.widget.EditText; import androidx.annotation.IdRes; import androidx.annotation.LayoutRes; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatAct ivity; import androidx.constraintlayout.widget.Co nstraintLayout; public class Dialog extends AppCompatActivity { public void customerDialog (@LayoutRes int resource, @IdRes int etInput, EditText etMain ){ AlertDialog.Builder builder = new AlertDialog.Builder(this); ConstraintLayout cl = (ConstraintLayout) getLayoutInflater().inflate(resourc e, null); builder.setView(cl); builder.setPositiveButton("ok", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { AlertDialog alertDialog = (AlertDialog) dialog; EditText inputText = alertDialog.findViewById(etInput); assert inputText != null; etMain.setText(inputText.getText(). toString()); dialog.dismiss(); } }); builder.show(); } } --------------------------------------------------------------------------------------------------- !!!Кто знает почему? Как это спасти? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создать класс для работы с одномерными динамическими массивами значений типа unsigned int. Предусмотреть функции класса для выполнения таких операций | Falcome | Помощь студентам | 0 | 10.05.2020 16:54 |
Создание классов - Имеется класс город. Класс область содержит массив городов. Класс область содержит метод, который осуществляет поиск города по его названию. | martofpain | C# (си шарп) | 5 | 23.12.2019 07:57 |
CSS. Класс для контейнера, класс для текста | Stilet | HTML и CSS | 14 | 23.02.2015 20:35 |
Создать класс Date для работы с датами в формате «год.месяц.день» (Стандартная задачка для студентов на C#) | roomatan | C# (си шарп) | 1 | 13.10.2013 08:55 |
Класс запускает поток, который заполняет этот класс. Обмен класс <=> поток. | Человек_Борща | Общие вопросы Delphi | 8 | 27.02.2012 23:24 |