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

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

Войти
Регистрация
Восстановить пароль
 
JerryLetehen
5 / 5 / 0
Регистрация: 07.11.2015
Сообщений: 145
#1

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

15.11.2016, 21:04. Просмотров 387. Ответов 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? - Программирование Android
Есть кнопка с прогрессом, по ее клику вызывается это: private void sendProgress (final LinearProgressButton button){ ...

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

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

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

Как сделать такое AlertDialog - Программирование Android
Помогите сделать вот такой AlertDialog или (не знаю что они использовали). Работает так нажимаещ ImageButton открываеться такое типа...

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

14
ExFau$t
357 / 343 / 66
Регистрация: 08.05.2012
Сообщений: 1,738
15.11.2016, 21:06 #2
Вот, возможно, то, что тебе нужно: ProgressDialog вместо алерта.
0
JerryLetehen
5 / 5 / 0
Регистрация: 07.11.2015
Сообщений: 145
16.11.2016, 20:16  [ТС] #3
Цитата Сообщение от ExFau$t Посмотреть сообщение
Вот, возможно, то, что тебе нужно: ProgressDialog вместо алерта.
Эм... не думаю, что будет вызвать лучше его.... Хотя***.... А есть ещё варианты?
0
ExFau$t
357 / 343 / 66
Регистрация: 08.05.2012
Сообщений: 1,738
16.11.2016, 20:22 #4
А что тебе не нравится, туда также кастомную вьюху можно залить, я просто не знаю как обновить созданный алерт, честно. Если только dismiss его, а потом создать заново, но это бред.
0
JerryLetehen
5 / 5 / 0
Регистрация: 07.11.2015
Сообщений: 145
16.11.2016, 20:36  [ТС] #5
Цитата Сообщение от ExFau$t Посмотреть сообщение
А что тебе не нравится
Дело в том, что у меня "функциональный" алерт, при нажатии на негативную/позитивную кнопки срабатывают соответствующие функции... А что если вызвать регулировку громкости телефона сразу же... то есть я буду менять ползунок SeekBar и этот же ползунок будет ползать по регулировке громкости в online режиме так сказать??
0
ExFau$t
357 / 343 / 66
Регистрация: 08.05.2012
Сообщений: 1,738
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
5 / 5 / 0
Регистрация: 07.11.2015
Сообщений: 145
17.11.2016, 18:10  [ТС] #8
Цитата Сообщение от Antohsa Посмотреть сообщение
видимо выводит пустоту?
Set выводит, а прогресс - нет.
Цитата Сообщение от Antohsa Посмотреть сообщение
а саму строку задай с конструкцией в виде %1$d
Хех... Не понимаю я таких сложных слов... %1 - понятно, $d - понятно, а вот задать строку с такой конструкцией... не..
Цитата Сообщение от Antohsa Посмотреть сообщение
попробуй volumeSetter.setMessage(Integer.toString(porgress));
Не-а
0
ExFau$t
357 / 343 / 66
Регистрация: 08.05.2012
Сообщений: 1,738
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
5 / 5 / 0
Регистрация: 07.11.2015
Сообщений: 145
18.11.2016, 07:25  [ТС] #11
Цитата Сообщение от Antohsa Посмотреть сообщение
вообще ничего не происходит?
Именно
0
Khaker_tt
30 / 30 / 6
Регистрация: 24.11.2015
Сообщений: 329
Завершенные тесты: 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
5 / 5 / 0
Регистрация: 07.11.2015
Сообщений: 145
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
Сообщений: 329
Завершенные тесты: 1
20.11.2016, 12:22 #14
это пример у моего приложение которые текст Alert dialog меняется в зависимость от изменение TextView. Вам только придется переделать на SeekBar.
0
JerryLetehen
5 / 5 / 0
Регистрация: 07.11.2015
Сообщений: 145
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, если нет интернета? - Программирование Android
Здравствуйте!Как правильно вставить AlertDialog если нет интернета? Т.е. я через webView (wv) гружу сайт и если есть инет,то все идет...

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

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

Как менять высоту(height) в зависимости от размера окна браузера клиента ? - JavaScript
Народ помогите плз! есть: -------------------------------------- <p id="txt </p> <input type="button" value="text 1"...


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

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

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