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

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

Войти
Регистрация
Восстановить пароль
 
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
#1

Сделать паузу перед закрытием AlertDilaog - Программирование Android

17.11.2016, 02:49. Просмотров 316. Ответов 11
Метки нет (Все метки)

Всем, Здравствуйте.

Задача простая. Выводится диалог "Скорость игры", там четыре скорости. Реализую с помощью AlertDialog с переключателями. Со списком мне не подходит, так как я не могу подсветить текущую скорость, если есть способ это сделать (не прибегая к встройки собственного view в диалог), то почти все решится .

В итоге делаю так:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
               
int choose=(int)(3 - speed_of_game/1000);
if (speed_of_game==100) choose = 3;
AlertDialog.Builder speed_dialog = new AlertDialog.Builder(this);
speed_dialog.setTitle(getString(R.string.speed_of_game))
     .setSingleChoiceItems(R.array.speed_of_game, choose, new DialogInterface.OnClickListener() {
          public void onClick(DialogInterface dialog, int item) {
                speed_of_game = (3 - item) * 1000;
                if (item == 4) speed_of_game = 100;
                 dialog.cancel();
              }
       });
speed_dialog.create();
speed_dialog.show();
Соответственно определяю текущую скорость, ставлю галку в нужном пункте. Далее в зависимости от выбора пользователя переопределяю скорость. Убрал, вернее не добавляю кнопок ОК и Cancel. Сразу же закрываю диалог. Кнопки мне не нужны.

Проблема: я не вижу, выбора... то есть диалог закрывается раньше, чем отрисовывается переключение в RadioGroup. Не понятно, произошел выбор или нет. На деле то, конечно произошел, но выглядит не убедительно. Пробовал dilalog.wait в разных вариантах перед закрытием, всегда одна ошибка, о том что объект не закрыт..... опять мои вечные проблемы с паузой в Андройде...

Вопрос 2:

Хотелось бы каждый раз не создавать диалог, а лишь показывать и скрывать... но перед показом мне нужно выставить текущую скрость... метода типа setCheckedItem не нашел... из-за этого каждый раз приходится создавать новый диалог. Да, в моей случае (приложение крайне простое) это мелочи, но все таки хочется сделать "красиво".

Заранее, спасибо.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2016, 02:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сделать паузу перед закрытием AlertDilaog (Программирование Android):

Как сделать паузу — запретить нажатие кнопок на 5 секунд? - Программирование Android
Принцип игры - вопросы на время. По кнопке "Старт" запускается таймер обратного отсчета, кнопка превращается в "Далее" и, пока работает...

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

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

Как сделать проверку памяти перед скачиванием файла - Программирование Android
Добрый день. Сделал AsyncTask отдельным файлом.Скачиваю фаил, появляется ProgressDialog идет процесс закачки на карту, все работает. ...

LogCat - Происходит ошибка с закрытием SystemUI - Программирование Android
Добрый день! Перейдя по ссылке найденой в Google Now сворачиваю браузер кнопкой Home, после чего захожу в недавние приложения (удерживаю...

Таймер на паузу - Программирование Android
Доброго времени суток. В ImageView загружаются картинки каждые 0,3 секунды. Есть кнопка play, которая включает анимацию. Нужно добавить...

11
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
17.11.2016, 03:52 #2
Да сделай ты DialogFragment и не парься
0
vxg
Модератор
3189 / 1992 / 228
Регистрация: 13.01.2012
Сообщений: 7,712
17.11.2016, 09:17 #3
Antohsa, по нажатию пункта сделать постделай ранабла делающего кансел?
0
ExFau$t
372 / 358 / 75
Регистрация: 08.05.2012
Сообщений: 1,806
17.11.2016, 10:15 #4
Antohsa, или вставить таки позитивную кнопку, закрывающую алерт?
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
17.11.2016, 13:27  [ТС] #5
vxg, а postDelay на что мне повесить? Не могу понять...

ExFau$t, тогда все работает верно.... но это лишний клик...
0
ExFau$t
372 / 358 / 75
Регистрация: 08.05.2012
Сообщений: 1,806
17.11.2016, 13:44 #6
Это не лишний клик, а обязательный, к тому же пользователь может банально выбрать не тот элемент.
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
17.11.2016, 13:47  [ТС] #7
ExFau$t, Вы пытаетесь не решить мою проблему, а уговорить сделать по другому...

Если даже выбрал не то, это не критично, можно сразу поменять обратно....
0
vxg
Модератор
3189 / 1992 / 228
Регистрация: 13.01.2012
Сообщений: 7,712
17.11.2016, 15:55 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Antohsa, вот так (задержка 2 секунды для наглядности)
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
37
38
39
40
41
42
43
44
45
package com.example.dialogtest;
 
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckedTextView;
 
public class MainActivity extends Activity {
    private Button button;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        button = (Button)findViewById(R.id.button1);
        
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("Title");
                builder.setSingleChoiceItems(new ArrayAdapter<String>(MainActivity.this, android.R.layout.select_dialog_singlechoice, new String[]{"Item1", "Item2"})), 0, null); 
                final AlertDialog dialog = builder.show();
                dialog.getListView().setOnItemClickListener(new OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        button.postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                dialog.dismiss();
                            }
                        }, 2000); 
                    }
                });
            }
        });
    }
}
1
OlegJV
103 / 103 / 29
Регистрация: 13.03.2016
Сообщений: 472
17.11.2016, 16:50 #9
Цитата Сообщение от Antohsa Посмотреть сообщение
можно сразу поменять обратно....
Это два лишних клика
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
17.11.2016, 23:00  [ТС] #10
vxg, button = (Button)findViewById(R.id.button1);, а что за кнопка? Или просто фиктивная? С Visisbility.Gone? Или вообще можно на любой view повесить?
0
vxg
Модератор
3189 / 1992 / 228
Регистрация: 13.01.2012
Сообщений: 7,712
18.11.2016, 06:14 #11
Antohsa, вроде бы взрослый человек а такой вопрос... это просто тестовая кнопка - должен же я как то вызвать диалог. думаю подойдёт любой вью даже тот который прилетает в слушатель
1
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
19.11.2016, 14:14  [ТС] #12
vxg, спасибо... все получилось...
0
19.11.2016, 14:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.11.2016, 14:14
Привет! Вот еще темы с ответами:

Поставить игру на паузу и продолжить с этого же места - Программирование Android
В игре,которую я строю,хочу создать кнопку продолжить. Как мне сохранить данные,чтобы нажав на эту кнопку,продолжить с того места,где я...

Как сделать паузу перед загрузкой страницы - C# ASP.NET
ДОбрый день. В моем проекте после регистрации нового юзера - он перенаправдяется на страницу входа на сайт. Так вот в промежутке между...

Сохранение информации перед закрытием - C#
Есть форма. Есть какие-то переменные, которые задаются во время работы приложения. Нужно, чтобы при закрытии значения сохранялись. Потом...

Alert перед закрытием сайта - JavaScript
Здравствуйте! Подскажите пожалуйста, как это называется. При закрытие вкладки с определенной страницей, вначале высвечивается похожее...


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

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

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