Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 147
#1

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

01.11.2015, 18:02. Просмотров 221. Ответов 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();
            }
        };
Однако, чувствую, что это костыль.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
 Аватар для YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
01.11.2015, 18:47     Как красиво закрывать приложение? #2
Ханасака, Задайте диалогу setDismissListener. Когда будет вызвано событие закрытия, сделайте finish внутри Handler#postDelayed с интервалом, например, 200 мс
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 147
01.11.2015, 19:07  [ТС]     Как красиво закрывать приложение? #3
Цитата Сообщение от YuraAAA Посмотреть сообщение
Когда будет вызвано событие закрытия
Простите за непонятливость, но как узнать когда это?
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 147
03.11.2015, 19:23  [ТС]     Как красиво закрывать приложение? #4
Цитата Сообщение от 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
YuraAAA
 Аватар для YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
03.11.2015, 19:36     Как красиво закрывать приложение? #5
Ханасака, ставить listener в нажатии на ок
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 147
04.11.2015, 13:09  [ТС]     Как красиво закрывать приложение? #6
Цитата Сообщение от 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?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2015, 13:40     Как красиво закрывать приложение?
Еще ссылки по теме:

Android Как запустить приложение на android 4.0.4
Android Как красиво разместить на экране 16 кнопок (4x4)?
Android Как защитить приложение
Android Как привязать приложение к ВК?
Android Как работает новостное приложение?

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

Или воспользуйтесь поиском по форуму:
YuraAAA
 Аватар для YuraAAA
1564 / 1306 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
04.11.2015, 13:40     Как красиво закрывать приложение? #7
Ханасака,
да по идее можно и просто так:

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);
            }
        })
Yandex
Объявления
04.11.2015, 13:40     Как красиво закрывать приложение?
Ответ Создать тему
Опции темы

Текущее время: 02:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru