Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Java Мобильная разработка (Android)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2020, 11:47   #1
Ananation
Новичок
Джуниор
 
Регистрация: 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();
}
}
---------------------------------------------------------------------------------------------------

!!!Кто знает почему? Как это спасти?
Ananation вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс для работы с одномерными динамическими массивами значений типа 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