Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

01.11.2015, 18:02. Просмотров 310. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2015, 18:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как красиво закрывать приложение? (Программирование Android):

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

Как красиво разместить на экране 16 кнопок (4x4)? - Программирование Android
мне надо разместить на экране 16 кнопок(4х4 размещение, кнопки квадратные, одинакового размера, с рисунками). подскажите новичку, как...

Как открывать/закрывать NavigationDrawer кнопкой "Menu" - Программирование Android
собсно и вопрос в этом, где и что повесить на хардварную кнопку меню чтоб вызывался NavigationDrawer?

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

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

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

6
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
01.11.2015, 18:47 #2
Ханасака, Задайте диалогу setDismissListener. Когда будет вызвано событие закрытия, сделайте finish внутри Handler#postDelayed с интервалом, например, 200 мс
0
Ханасака
10 / 10 / 0
Регистрация: 12.07.2013
Сообщений: 147
01.11.2015, 19:07  [ТС] #3
Цитата Сообщение от YuraAAA Посмотреть сообщение
Когда будет вызвано событие закрытия
Простите за непонятливость, но как узнать когда это?
0
Ханасака
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
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
03.11.2015, 19:36 #5
Ханасака, ставить listener в нажатии на ок
0
Ханасака
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?
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 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);
            }
        })
1
04.11.2015, 13:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2015, 13:40
Привет! Вот еще темы с ответами:

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

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

как спаять так красиво и ровно светодиоды как на видео? - Лазеры
http://www.youtube.com/watch?v=ixaii5U17DQ

GET параметры... как сделать красиво? - PHP
Я на сайте сделал так: site.ru/index.php?page=shop&amp;par1=1&amp;par2=2&amp;par3=3 кол-во параметров может быть различное... Используя mod...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.