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

Как сразу изменить время для handler после его изменения в настройках? - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Как работать с каждой страницей приложения в Tabbed Activity? http://www.cyberforum.ru/android-dev/thread1651486.html
Не так давно разработчики добавили в Android Studio такую интересную вещь, как Tabbed Activity. Так вот, нет ли у кого уроков по этому разделу? Или может быть кто знает как работать с каждой страницей приложения в Tabbed Activity? А то я добавляю кнопку и она появляется на всех страницах приложения, а хотелось бы добавить один контент на первую страницу, другой на вторую. Спасибо
Android Закругленные углы Как с помощью xml закруглить? <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/round_bg"> http://www.cyberforum.ru/android-dev/thread1651365.html
Скачивание xls файла и сохранение Android
Добрый день. Я хочу сделать так, чтобы при нажатии на кнопку приложение скачивало xls файл с сервера и сохраняло его в нужную директорию. Как это реализовать? Нашёл пример в гугле, но он не подошёл.
Android вылетает программа
решил попробовать написать под андроид, в приложение вылетает ошибка и приложение завершается public class DataAdapter extends ArrayAdapter<String> { private static final String mContacts = {"1", "2", "3", "4", "5", "6", "7", "8", "9"}; Context mContext; private static List<String> mList = new ArrayList<String>(); public DataAdapter(Context context, int...
Android Округлить double http://www.cyberforum.ru/android-dev/thread1651252.html
Иногда возвращается число с десятыми/сотыми и т.д., к примеру 47,5674, а иногда есть только десятые/сотые и т.д., например 0,042137854.. Задача: если это число 47,5674 и подобные, то округлить до 47,57. Если 0,042137854, то 42,13. Как это можно реализовать? Надеюсь понятно, что нужно. :D
Android Картинка не отображается в ImageView Помогите! Только начинаю изучать Android. Загружаю большую картинку в ImageView. Приложение загружается, работает, но картинка просто не отображается. Пробовал загружать картинки поменьше - всё работает. если загружать эту же картинку в WebView, то она тоже отображается. В чем подвох?:cry: подробнее

Показать сообщение отдельно
Mingorto
0 / 0 / 0
Регистрация: 12.08.2015
Сообщений: 6

Как сразу изменить время для handler после его изменения в настройках? - Android

30.01.2016, 20:12. Просмотров 116. Ответов 0
Метки (Все метки)

Добрый день. В общем, суть проблемы в следующем - есть "помодоро" таймер, в нем можно в настройках изменять время. Но проблема в том, что если, например, закончилось время отдыха, то я не могу изменить время работы, оно меняется только на следующий раз. Как сделать так, чтобы время изменялась сразу же? Спасибо)

MainActivity
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
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    private final String TAG = "PomodoroTimer count";
    SharedPreferences sharedPreferences;
    private TextView mTimer;
    private Button startButton, pauseButton;
    int TIME_WORK_SESSION;//время работы(в секундах)
    int TIME_REST_SESSION;//время отдыха(в секундах)
    int BIG_REST_SESSION;
    private int seconds;
    private boolean isRunning;
    private boolean isWork;
    private boolean timeStop, workOrRest;
    private boolean textSwitcher = true;
    private int bigTomato = 0;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTimer = (TextView) findViewById(R.id.tv);
        startButton = (Button) findViewById(R.id.startButton);
        pauseButton = (Button) findViewById(R.id.pauseButton);
        startButton.setOnClickListener(this);
        pauseButton.setOnClickListener(this);
        seconds = TIME_WORK_SESSION;
        isWork = true;
 
        sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        seconds= Integer.parseInt(String.valueOf(sharedPreferences.getString("work_time", "5")));
        //Скрыть Action bar
        //getSupportActionBar().hide();
        runTimer();
    }
 
    @Override
    protected void onResume() {
        TIME_WORK_SESSION = Integer.parseInt(String.valueOf(sharedPreferences.getString("work_time", "5")));
        TIME_REST_SESSION = Integer.parseInt(String.valueOf(sharedPreferences.getString("short_break", "2")));
        BIG_REST_SESSION = Integer.parseInt(String.valueOf(sharedPreferences.getString("big_short", "7")));
        super.onResume();
    }
 
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.startButton:
                textSwitcher = false;
                timeStop = true;
                isRunning = true;
                break;
            case R.id.pauseButton:
                isRunning = false;
        }
    }
 
    //Настройка тайера
    private void runTimer() {
        final Handler handler = new Handler();
        handler.post(new Runnable() {
            @Override
            public void run() {
                    int hours = seconds / 3600;
                    int minutes = (seconds % 3600) / 60;
                    int secs = seconds % 60;
                    String time = String.format("%d:%02d:%02d", hours, minutes, secs);
                if (textSwitcher) {
                    if (workOrRest)
                        mTimer.setText("Rest");
                    else mTimer.setText("Work");
                }
                else
                    mTimer.setText(time);
                    if (timeStop) {
                        if (isRunning && isWork && seconds == 0) {
                            int rest;
                            isWork = false;
                            if (bigTomato == 3) { //Уход на большой перерыв
                                rest = BIG_REST_SESSION;
                                bigTomato = -1;
                            } else //Уход на меленький перерыв
                                rest = TIME_REST_SESSION;
                            seconds = rest;
                            textSwitcher = true;
                            workOrRest = true;
                            timeStop = false;
                        } else if (isRunning && !isWork && seconds == 0) {
                            isWork = true;
                            seconds = TIME_WORK_SESSION;
                            timeStop = false;
                            bigTomato += 1;
                            Log.d(TAG, "big Tomato count = " + bigTomato);
                            workOrRest = false;
                            textSwitcher = true;
                        } else if (isRunning) {
                            seconds--;
                        }
                    }
                    handler.postDelayed(this, 1000);//handler.post(this);
                }
        });
    }
 
    //Создание меню настроек
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuItem menuItem = menu.add(0, 1, 0, "Setting");
        menuItem.setIntent(new Intent(this, Prefs.class));
        return super.onCreateOptionsMenu(menu);
    }
}
Файл настроек
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
public class Prefs extends PreferenceActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        PreferenceScreen rootScreen = getPreferenceManager().createPreferenceScreen(this);
        setPreferenceScreen(rootScreen);
 
        EditTextPreference etp1 = new EditTextPreference(this);
        etp1.setKey("work_time");
        etp1.setTitle("Работа");
        etp1.setDefaultValue("3");
        etp1.setDialogTitle("Сколько вы будете работать?");
 
        EditTextPreference etp2 = new EditTextPreference(this);
        etp2.setKey("short_break");
        etp2.setTitle("Короткий перерыв");
        etp2.setDefaultValue("5");
        etp2.setDialogTitle("Сколько вы будете отдыхать?");
 
        EditTextPreference etp3 = new EditTextPreference(this);
        etp3.setKey("big_short");
        etp3.setTitle("Большой перерыв");
        etp3.setDefaultValue("7");
        etp3.setDialogTitle("Сколько вы будете отдыхать");
 
        rootScreen.addPreference(etp1);
        rootScreen.addPreference(etp2);
        rootScreen.addPreference(etp3);
 
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru