Валится кастомный диалог при изменении ориентации

Интерфейс, диалоги, темы, стили, меню
Ответить
gagarinn
Сообщения: 12
Зарегистрирован: 09 янв 2012, 13:55
Откуда: Харьков

Валится кастомный диалог при изменении ориентации

Сообщение gagarinn » 04 фев 2012, 00:24

Здравствуйте, уважаемые форумчане!
Не могу найти решение сложившейся ситуации. Дошел до чтения исходников андроида, но все равно не могу понять, не хватает образования ;)

Сложилась такая ситуация. Для того, чтобы в приложении, в каждом активити не описывать диалог был создан свой. Все прекрасно работает до тех пор пока не изменяется ориентация телефона или эмулятора, потом прорисовывается базовое активити, но уже без диалога, причем в такой же ситуации стандартный диалог работает корректно. Был найден выход в манифесте прописать android:configChanges = "orientation" и он работает. Но только на телефоне! В эмуляторе выдает ошибку в строке dialog.show(); в базовом активити. И на экране только активити без диалога. Есть подозрения, что возможно на других телефонах возможно повторение этого неприятного события.
Таким образом. Сбой возникает при повторном вызове onCreate() активити, непонятно что происходит с контекстом при повторном вызове. Все что я проделывал похоже на танцы с бубном. Кроме уничтожения диалога в onPause(). Тогда ошибки не возникает, но диалог пропадает при повороте :(

Решил искать чем же отличается создание и жизненный цикл стандартного диалога, от созданного мной. Но ...

Вот код класса диалога. В базовом активити вызывал из разных мест (с различным контекстом). Но... Пришел сюда ;)

public class SimpleDialog extends Dialog {

public static boolean DIALOG_EXIST = false;

public SimpleDialog(final Context context) {

super(context);
}

TextView dialogMessage;
private String message=null;
private int messageId=0;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alertdialog);

Button buttonOK = (Button) findViewById(R.id.btn_dialog_ok);
buttonOK.setOnClickListener(new OKListener());

dialogMessage = (TextView) findViewById(R.id.dialogtext);

if (message != null | messageId !=0){
// dialogMessage.setText(message);
dialogMessage.setText(messageId);
}
else {
dialogMessage.setText("Anknown error");
}

}

public void setMessage(String text) {
this.message = text;
}
public void setMessage(int idd) {
this.messageId = idd;

}
private class OKListener implements android.view.View.OnClickListener {

@Override
public void onClick(View v) {

SimpleDialog.this.dismiss();

}

}

}

Заранее спасибо. Критика и размышления о жизненных циклах приветствуются!

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Валится кастомный диалог при изменении ориентации

Сообщение damager82 » 07 фев 2012, 13:15

Использовал ваш класс для создания диалога.
У меня на эмуляторе работает без проблем. И при повороте экрана он никуда не пропадает.

По кастомизации диалогов у гугла есть хороший пример:
http://developer.android.com/guide/topi ... stomDialog
смотрели его?
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

gagarinn
Сообщения: 12
Зарегистрирован: 09 янв 2012, 13:55
Откуда: Харьков

Re: Валится кастомный диалог при изменении ориентации

Сообщение gagarinn » 20 фев 2012, 00:37

Нет, не смотрел. Спасибо, посмотрю. Сделал через ФрагментДиалог. В том то и дело, что на телефоне и некоторых эмуляторах работает без проблем, а на некоторых валится. И непонятно то ли что-то с эмуляторами то ли с руками...

NobodyCallMeChicken
Сообщения: 17
Зарегистрирован: 27 фев 2012, 10:53

Re: Валится кастомный диалог при изменении ориентации

Сообщение NobodyCallMeChicken » 01 мар 2012, 20:03

Заранее прощение если покажусь нубом)
Мне кажется у вас в этой строке ошибка if (message != null | messageId !=0){ а должно быть так
if (message != null || messageId !=0){. Или в яве операция логического "или" эквивалента условному "или" и эта запись не ошибочна?

SoLVeX
Сообщения: 15
Зарегистрирован: 21 фев 2012, 19:11
Контактная информация:

Re: Валится кастомный диалог при изменении ориентации

Сообщение SoLVeX » 07 мар 2012, 13:56

gagarinn писал(а):Нет, не смотрел. Спасибо, посмотрю. Сделал через ФрагментДиалог. В том то и дело, что на телефоне и некоторых эмуляторах работает без проблем, а на некоторых валится. И непонятно то ли что-то с эмуляторами то ли с руками...
В LogCat должно быть сообщение об ошибке. Если уж валится, то пишите, пожалуйста, сообщение об ошибке.

ЗЫ К админу: может в правила ввести пункт что бы постили LogCat?

Ответить