Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
JerryLetehen
14 / 14 / 2
Регистрация: 07.11.2015
Сообщений: 234
#1

Как менять message AlertDialog в зависимости от progress SeekBar? - Программирование Android

15.11.2016, 21:04. Просмотров 452. Ответов 14
Метки нет (Все метки)

Доброго времени суток) В моём приложении при нажатии на TextVeiw появляется AlertDialog, в который я всунул SeekBar. Нужно, чтобы message менялся в зависимости от progress SeekBar. В гугле, где ни посмотрю, везде в onProgressChanged добавлена строчка кода, где приписывают .setMessage(... + progress) (или .setText). Но у меня это не работает. Возможно, что-то делаю не так(новичок), help!!!
Кусок кода
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
editVolume.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final AlertDialog.Builder volumeSetter = new AlertDialog.Builder(MainActivity.this);
                volumeSetter.setTitle(R.string.ChangeVolume);
                volumeSetter.setMessage(R.string.Set);
                volumeBar = new SeekBar(MainActivity.this);
                volumesetter = (AudioManager) getSystemService(AUDIO_SERVICE);
                volumeBar.setMax(volumesetter.getStreamMaxVolume(AudioManager.STREAM_RING));
                volumeBar.setProgress(volumesetter.getStreamVolume(AudioManager.STREAM_RING));
                volumeBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                    @Override
                    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                        volume = progress;
                        volumeSetter.setMessage(R.string.Set + progress);
                    }
 
                    @Override
                    public void onStartTrackingTouch(SeekBar seekBar) {
                    }
 
                    @Override
                    public void onStopTrackingTouch(SeekBar seekBar) {
                    }
                });
                volumeSetter.setView(volumeBar);
                volumeSetter.setNeutralButton(R.string.OkeyButton, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        editVolume.setText(getString(R.string.Set) + volume);
                        volume_set = volume;
                        checkvolume = true;
                        dialog.cancel();
                    }
                });
                volumeSetter.setNegativeButton(R.string.Back_Button, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });
                volumeSetter.show();
            }
        });

Весь код
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
package com.example.jerryletehen.setyourvolume;
 
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.TimePicker;
import android.media.AudioManager;
 
import java.util.Calendar;
 
public class MainActivity extends AppCompatActivity {
    AudioManager volumesetter;
    TimePickerDialog timepickerdialog;
    SeekBar volumeBar;
    Calendar time = Calendar.getInstance();
    int volume = 0;
    int volume_set;
    int time_set_h;
    int time_set_m;
    boolean checktime = false;
    boolean checkvolume = false;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // finals
        final TextView editTime = (TextView) findViewById(R.id.editTime);
        final TextView editVolume = (TextView) findViewById(R.id.editVolume);
        final Button button = (Button) findViewById(R.id.button);
        // Users clicks
        // set Time
        editTime.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Calendar mcurrentTime = Calendar.getInstance();
                int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
                int minute = mcurrentTime.get(Calendar.MINUTE);
 
                timepickerdialog = new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
                    @Override
                    public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) {
                        String selectedMinute0;
                        if (selectedMinute == 0 || selectedMinute == 1 || selectedMinute == 2 || selectedMinute == 3 || selectedMinute == 4 || selectedMinute == 5 || selectedMinute == 6 || selectedMinute == 7 || selectedMinute == 8 || selectedMinute == 9) {
                            selectedMinute0 = "0";
                            editTime.setText(selectedHour + ":" + selectedMinute0 + selectedMinute);
                            checktime = true;
                        } else {
                            editTime.setText(selectedHour + ":" + selectedMinute);
                            time_set_h = selectedHour;
                            time_set_m = selectedMinute;
                            checktime = true;
                        }
                    }
                }, hour, minute, true);//Yes 24 hour time
                timepickerdialog.show();
            }
        });
        // set Volume level
        editVolume.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final AlertDialog.Builder volumeSetter = new AlertDialog.Builder(MainActivity.this);
                volumeSetter.setTitle(R.string.ChangeVolume);
                volumeSetter.setMessage(R.string.Set);
                volumeBar = new SeekBar(MainActivity.this);
                volumesetter = (AudioManager) getSystemService(AUDIO_SERVICE);
                volumeBar.setMax(volumesetter.getStreamMaxVolume(AudioManager.STREAM_RING));
                volumeBar.setProgress(volumesetter.getStreamVolume(AudioManager.STREAM_RING));
                volumeBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
                    @Override
                    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                        volume = progress;
                        volumeSetter.setMessage(R.string.Set + progress);
                    }
 
                    @Override
                    public void onStartTrackingTouch(SeekBar seekBar) {
                    }
 
                    @Override
                    public void onStopTrackingTouch(SeekBar seekBar) {
                    }
                });
                volumeSetter.setView(volumeBar);
                volumeSetter.setNeutralButton(R.string.OkeyButton, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        editVolume.setText(getString(R.string.Set) + volume);
                        volume_set = volume;
                        checkvolume = true;
                        dialog.cancel();
                    }
                });
                volumeSetter.setNegativeButton(R.string.Back_Button, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });
                volumeSetter.show();
            }
        });
        // main button
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder button_alert = new AlertDialog.Builder(MainActivity.this);
                if (!checktime) {
                    button_alert.setMessage(R.string.DidnotSetTime);
                    button_alert.setNegativeButton(R.string.Back_Button, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.cancel();
                        }
                    });
                } else if (!checkvolume) {
                    button_alert.setMessage(R.string.DidnotSetVolumeLevel);
                    button_alert.setNegativeButton(R.string.Back_Button, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.cancel();
                        }
                    });
                } else {
                    button_alert.setMessage(R.string.CompleteText);
                    button_alert.setPositiveButton(R.string.OkeyButton, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            volume_method();
                            dialog.cancel();
                        }
                    });
                    button_alert.setNegativeButton(R.string.Back_Button, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.cancel();
                        }
                    });
                }
                button_alert.show();
            }
        });
    }
 
    private void volume_method() {
        volumesetter.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION);
        volumesetter.setStreamVolume(AudioManager.STREAM_NOTIFICATION, volume_set, volume_set);
        volumesetter.getStreamMaxVolume(AudioManager.STREAM_SYSTEM);
        volumesetter.setStreamVolume(AudioManager.STREAM_SYSTEM, volume_set, volume_set);
        volumesetter.getStreamMaxVolume(AudioManager.STREAM_RING);
        volumesetter.setStreamVolume(AudioManager.STREAM_RING, volume_set, volume_set);
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.11.2016, 21:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как менять message AlertDialog в зависимости от progress SeekBar? (Программирование Android):

Progress Button, как вызвать метод, а после закончить Progress?
Есть кнопка с прогрессом, по ее клику вызывается это: private void...

Как менять Theme у приложения в зависимости от версии андроид?
Здравствуйте! Есть приложение на андроид, использующее, к примеру...

Как заблокировать SeekBar?
Хочу использовать SeekBar для того, чтобы отображать выбранный уровень...

В зависимости от позиции Spinner-а менять текст в TextView
Здравствуйте, только познаю андроид, так что сильно не ругайте. Создал спинер,...

Как поменять цвет seekBar?
Background меняет фон, foreground вообще никаких изменений. Хочу поменять сам...

Как сделать такое AlertDialog
Помогите сделать вот такой AlertDialog или (не знаю что они использовали)....

14
ExFau$t
520 / 475 / 101
Регистрация: 08.05.2012
Сообщений: 2,380
15.11.2016, 21:06 #2
Вот, возможно, то, что тебе нужно: ProgressDialog вместо алерта.
0
JerryLetehen
14 / 14 / 2
Регистрация: 07.11.2015
Сообщений: 234
16.11.2016, 20:16  [ТС] #3
Цитата Сообщение от ExFau$t Посмотреть сообщение
Вот, возможно, то, что тебе нужно: ProgressDialog вместо алерта.
Эм... не думаю, что будет вызвать лучше его.... Хотя***.... А есть ещё варианты?
0
ExFau$t
520 / 475 / 101
Регистрация: 08.05.2012
Сообщений: 2,380
16.11.2016, 20:22 #4
А что тебе не нравится, туда также кастомную вьюху можно залить, я просто не знаю как обновить созданный алерт, честно. Если только dismiss его, а потом создать заново, но это бред.
0
JerryLetehen
14 / 14 / 2
Регистрация: 07.11.2015
Сообщений: 234
16.11.2016, 20:36  [ТС] #5
Цитата Сообщение от ExFau$t Посмотреть сообщение
А что тебе не нравится
Дело в том, что у меня "функциональный" алерт, при нажатии на негативную/позитивную кнопки срабатывают соответствующие функции... А что если вызвать регулировку громкости телефона сразу же... то есть я буду менять ползунок SeekBar и этот же ползунок будет ползать по регулировке громкости в online режиме так сказать??
0
ExFau$t
520 / 475 / 101
Регистрация: 08.05.2012
Сообщений: 2,380
16.11.2016, 20:53 #6
Цитата Сообщение от JerryLetehen Посмотреть сообщение
то есть я буду менять ползунок SeekBar и этот же ползунок будет ползать по регулировке громкости в online режиме так сказать??
Утвердительное предложение окончилось знаками вопроса, я ни слова не понял, причём тут громкость телефона? Вообще алерт предназначен для алертов, а для всяких сложностей используют фрагменты.
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
17.11.2016, 02:31 #7
SetMessage принимает либо ресурс в int, либо строку.

Вначале ты передаешь (volumeSetter.setMessage(R.string.Set) ресурс по int, он находит строку и подставляет...

Далее ты volumeSetter.setMessage(R.string.Set + progress) также передаешь int, но такого ресурса нет (R.string.Set + progress = число).. видимо выводит пустоту? или число в несколько миллионов?

Попробуй использовать getString(ресурс, (int)подстанвока), а саму строку задай с конструкцией в виде %1$d

Чтобы понять работает или нет, попробуй volumeSetter.setMessage(Integer.toString(porgress));
0
JerryLetehen
14 / 14 / 2
Регистрация: 07.11.2015
Сообщений: 234
17.11.2016, 18:10  [ТС] #8
Цитата Сообщение от Antohsa Посмотреть сообщение
видимо выводит пустоту?
Set выводит, а прогресс - нет.
Цитата Сообщение от Antohsa Посмотреть сообщение
а саму строку задай с конструкцией в виде %1$d
Хех... Не понимаю я таких сложных слов... %1 - понятно, $d - понятно, а вот задать строку с такой конструкцией... не..
Цитата Сообщение от Antohsa Посмотреть сообщение
попробуй volumeSetter.setMessage(Integer.toString(porgress));
Не-а
0
ExFau$t
520 / 475 / 101
Регистрация: 08.05.2012
Сообщений: 2,380
17.11.2016, 18:40 #9
Цитата Сообщение от JerryLetehen Посмотреть сообщение
Не понимаю я таких сложных слов... %1 - понятно, $d - понятно, а вот задать строку с такой конструкцией... не..
String.format()
0
Antohsa
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
17.11.2016, 22:50 #10
JerryLetehen, при volumeSetter.setMessage(Integer.toString(porgress)); вообще ничего не происходит?
0
JerryLetehen
14 / 14 / 2
Регистрация: 07.11.2015
Сообщений: 234
18.11.2016, 07:25  [ТС] #11
Цитата Сообщение от Antohsa Посмотреть сообщение
вообще ничего не происходит?
Именно
0
Khaker_tt
30 / 30 / 6
Регистрация: 24.11.2015
Сообщений: 330
Завершенные тесты: 1
19.11.2016, 19:23 #12
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity())
                        .setTitle(getResources().getString(R.string.dialog_title))
                        .setMessage("Пожалуйста подождите ...")
                        .setNeutralButton(R.string.check, null);
 
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
 
Button b_neutral = alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL);
b_neutral.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        TextView tv_message = (TextView) alertDialog.findViewById(android.R.id.message);
                        tv_message.setText("Начало работы ...");
    }
});
0
JerryLetehen
14 / 14 / 2
Регистрация: 07.11.2015
Сообщений: 234
20.11.2016, 12:08  [ТС] #13
Цитата Сообщение от Khaker_tt Посмотреть сообщение
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity())
                        .setTitle(getResources().getString(R.string.dialog_title))
                        .setMessage("Пожалуйста подождите ...")
                        .setNeutralButton(R.string.check, null);
 
AlertDialog alertDialog = alertDialogBuilder.create();
alertDialog.show();
 
Button b_neutral = alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL);
b_neutral.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        TextView tv_message = (TextView) alertDialog.findViewById(android.R.id.message);
                        tv_message.setText("Начало работы ...");
    }
});
Эм... А что это?? Как это поможет решить мою проблему?
0
Khaker_tt
30 / 30 / 6
Регистрация: 24.11.2015
Сообщений: 330
Завершенные тесты: 1
20.11.2016, 12:22 #14
это пример у моего приложение которые текст Alert dialog меняется в зависимость от изменение TextView. Вам только придется переделать на SeekBar.
0
JerryLetehen
14 / 14 / 2
Регистрация: 07.11.2015
Сообщений: 234
20.11.2016, 12:31  [ТС] #15
Цитата Сообщение от Khaker_tt Посмотреть сообщение
Вам только придется переделать на SeekBar.
У вас меняется из-за нажатия на кнопку, если я правильно понял. А у меня должен меняться текст в onProgressChanged, который почему-то меняться вовсе не хочет.
0
20.11.2016, 12:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2016, 12:31
Привет! Вот еще темы с решениями:

Как сделать AlertDialog со списком с цветными строками?
Вопрос новичка. Собственно subj. Есть список из десятка ЦВЕТОВ, которые нужно...

Как правильно вставить AlertDialog, если нет интернета?
Здравствуйте!Как правильно вставить AlertDialog если нет интернета? Т.е. я...

Как можно менять высоту контейнера в зависимости от высоты экрана?
Подскажите, пожалуйста. Как можно менять высоту контейнера в зависимости от...

Как менять размер страницы в зависимости от экрана мобильного телефона
Есть страничка на asp.net на которую переходят пользователи мобильных...


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

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

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