Как правильно удалить созданный Диалог?

355
24 августа 2017, 19:43

Создаю диалог со своей разметкой:

    @Override
protected Dialog onCreateDialog(final int id) {
    AlertDialog.Builder adb = new AlertDialog.Builder(this);
    LayoutInflater inflater = getLayoutInflater();
    View layout = inflater.inflate(R.layout.set_asp_dlg,null);
    TextView tvTitle = (TextView) layout.findViewById(R.id.tvTitle);
    tvTitle.setText(getString(R.string.aAspect) + " " + l_asp.get(CurItem));
    adb.setView(layout);
    Button btDlgInpNameOk = (Button) layout.findViewById(R.id.btDlgOk);
    Button btDlgInpNameCancel = (Button) layout.findViewById(R.id.btDlgCancel);
    final Dialog dialog = adb.create();
    btDlgInpNameOk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dismissDialog(id);
        }
    });
    btDlgInpNameCancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dismissDialog(id);
        }
    });
    return dialog;
}

Вызываю Диалог:

showDialog(1);

При вызове диалога повторно, появляется этот же диалог, но в разметке должны быть изменения зависящие от переменной CurItem (название у tvTitle меняется).

Может я неправильно удаляю диалог? Как добиться чтобы диалог каждый раз создавался в зависимости от условий?

Answer 1

Не надо удалять диалог, надо просто ловить/перегружать метод onPrepareDialog()

Дело в том, что onCreateDialog() вызывается при первом создании диалога и пока он не будет выгружен из памяти осью он не будет больше вызываться, чтобы изменить значения диалога перед показом, надо эти изменения делать в методе onPrepareDialog()

Метод правда устаревший, равно как и onCreateDialog() - теперь православным признается только DialogFragment

READ ALSO
Как правильно загрузить веб-проект на github.com

Как правильно загрузить веб-проект на github.com

Добрый деньСоздал веб-проект с применением технологий (Tomcat, JDBC, JSP, Servlets, Maven etc)

327
Неправильная дата GregorianCalendar

Неправильная дата GregorianCalendar

Есть кусок кода:

326
Can't scale and move components in IntelliJ [требует правки]

Can't scale and move components in IntelliJ [требует правки]

I can't scale and move components in IntelliJ with its GridLayoutThe problem is when I move/scale components they don't move to the exact place

219
Как добавить лишную строку в TextVIew

Как добавить лишную строку в TextVIew

Хочу добавить одну лишную строчкуЕсли в TextView указать maxLines = 4

201