Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
10 / 10 / 1
Регистрация: 12.07.2013
Сообщений: 147

Как красиво закрывать приложение?

01.11.2015, 18:02. Показов 1176. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Столкнулся с проблемой: если я закрываю своё приложение при помощи диалогового окна, то выглядит это очень некрасиво. Это связано с тем, что при нажатии кнопки "Да" в диалоговом окне, оно не пропадает, а как-то некрасиво блекнет, а потом просто закрывается все активити приложения вместе с окном. Не пойму, как сделать, чтоб сначала пропадало диалоговое окно, а затем закрывалось активити?
Спасибо!

Добавлено через 21 минуту
Я нашёл выход
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 public void onBackPressed() {
        if (!isEntered) {
            super.onBackPressed();
        } else {
            dialog = new AlertDialog.Builder(this)
                    .setNegativeButton(R.string.no, null)
                    .setTitle(R.string.exitFromProg)
                    .setMessage(R.string.areYouShure)
                    .setPositiveButton(R.string.yes,
                            new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog,
                                                    int which) {
                                    Thread my = new Thread(new Runnable() {
                                        @Override
                                        public void run() {
                                            h.sendEmptyMessage(1);
                                        }
                                    });
                                    my.start();
                                    Thread my1 = new Thread(new Runnable() {
                                        @Override
                                        public void run() {
                                            try {
                                                Thread.sleep(100);
                                            } catch (InterruptedException e) {
                                                e.printStackTrace();
                                            }
                                            db.close();
                                            isEntered = false;
                                            Start.super.onBackPressed();
                                        }
                                    });
                                    my1.start();
                                }
                            }).create();
В обработке Handler:
Java
1
2
3
4
5
6
7
h = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                Log.d(LOG_TAG, "inside handler");
                dialog.dismiss();
            }
        };
Однако, чувствую, что это костыль.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.11.2015, 18:02
Ответы с готовыми решениями:

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

Как остановить приложение,но не закрывать его
Написал крестики нолики,дошел до этапа функции победы,так вот,написал часть кода которая определяет победителя,но проблема в том что после...

Закрывать приложение, запущенное с флешки при ее извлечении
Здравствуйте! Есть приложение, запущенное с флешки. Необходимо сделать чтобы оно автоматически закрывалось при извлечении флешки. ...

6
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
01.11.2015, 18:47
Ханасака, Задайте диалогу setDismissListener. Когда будет вызвано событие закрытия, сделайте finish внутри Handler#postDelayed с интервалом, например, 200 мс
0
10 / 10 / 1
Регистрация: 12.07.2013
Сообщений: 147
01.11.2015, 19:07  [ТС]
Цитата Сообщение от YuraAAA Посмотреть сообщение
Когда будет вызвано событие закрытия
Простите за непонятливость, но как узнать когда это?
0
10 / 10 / 1
Регистрация: 12.07.2013
Сообщений: 147
03.11.2015, 19:23  [ТС]
Цитата Сообщение от YuraAAA Посмотреть сообщение
Задайте диалогу setDismissListener. Когда будет вызвано событие закрытия, сделайте finish внутри Handler#postDelayed
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
 dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
                @Override
                public void onDismiss(DialogInterface dialog) {
                    h.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            db.close();
                            isEntered = false;
                            finish();
                        }
                    },2000);
                }
            });
Закрывает красиво, но также закрывает по нажатию кнопки "нет/отмена", ведь срабатывает onDismiss
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
03.11.2015, 19:36
Ханасака, ставить listener в нажатии на ок
0
10 / 10 / 1
Регистрация: 12.07.2013
Сообщений: 147
04.11.2015, 13:09  [ТС]
Цитата Сообщение от YuraAAA Посмотреть сообщение
Ханасака, ставить listener в нажатии на ок
Java
1
2
3
4
5
6
7
8
9
setPositiveButton(R.string.yes,
              new DialogInterface.OnClickListener() {
                   @Override
                       public void onClick(DialogInterface dialog,
                                                    int which) 
                      {
                                                                   
                      });
               });
Как я понимаю, надо повесить этот обработчик внутри setPositiveButton?
0
 Аватар для YuraAAA
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
04.11.2015, 13:40
Ханасака,
да по идее можно и просто так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                new Handler().postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        finish();
                    }
                }, 300);
            }
        })
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.11.2015, 13:40
Помогаю со студенческими работами здесь

Закрывать или не закрывать тег <?php в отдельных файлах кода
Структура php файла такова: &lt;?php //Сам код 1 //Сам код 2 //Сам код 3 ?&gt; &lt;-- А это надо ставить?!

Закрывать или не закрывать в noindex?
Ситуация: есть каталог продукции, который выделен на сайте в виде навигационного меню. Меню отображается на каждой странице каталога,...

Закрывать / не закрывать категории от поисковиков
Всем привет! Сделал категории для сайта http://times.mk.ua/ (в самом низу) Есть несколько вопросов к знатокам: 1....

Как сделать красиво?
Как реализовать красиво и удобно функционал string to enum ( чтобы по стрингу брать элемент из енума) , с возможностью добавлять новые...

Как то не красиво работает
Здравствуйте. Подскажите пожалуйста что делать со всеми этими лишними полями, таблицами, триггерами, генераторами при создании новой БД в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru