В моем действии я хотел бы показать простые информационные диалоговые окна, материал как:
new AlertDialog.Builder(context).setMessage(message).show();
если я сделаю это, то диалоговое окно протечет, когда я буду вращаться, тот телефон (не говоря уже о нем исчезнет также, таким образом, пользователь может пропустить его). Я могу использовать управляемые диалоговые окна, но я не уверен, как Вы используете его разумно для этих типов коротких сообщений? Похож на Вас, должны сделать это:
showDialog(SOME_DLG_ID);
...
@Override
onCreateDialog(int id) {
if (id == SOME_DLG_ID) {
new AlertDialog.Builder(context).setMessage(message).show();
}
}
нет никакого способа передать то, чем сообщение должно быть в onCreateDialog начиная с переопределенный метод. Я не хотел бы сделать членскую переменную из родительского действия, которое просто хранит то, чем должно быть текущее сообщение. Как Вы все делаете это?
Спасибо
если я это сделаю, диалоговое окно потечет когда я поворачиваю телефон (не упомянуть, что он тоже исчезнет, поэтому пользователь может его пропустить)
Вы можете добавить
<activity
android:configChanges="orientation|keyboardHidden"
>
в свой AndroidManifest.xml, чтобы предотвратить перезапуск активности при вращении телефона. Я использую его в своем приложении, и мой AlertDialog выдерживает вращение телефона.
Вы можете реализовать Activity.onPrepareDialog (int, Dialog)
, чтобы отключить сообщение до того, как диалоговое окно отобразится на экране. Таким образом, вы можете сделать что-то вроде:
@Override protected void onPrepareDialog(int id, Dialog dialog) {
if (id == SOME_DLG_ID) {
((AlertDialog) dialog).setMessage(message);
}
}
Вам все равно придется отслеживать сообщение, которое вы в данный момент показываете в своей деятельности, но, по крайней мере, таким образом вы не создаете объект Dialog для каждого сообщения, которое хотите показать.