Проблема с изменением переменных в приложении из настроек - PullRequest
0 голосов
/ 05 мая 2020

В моем приложении есть алгоритм, которому для правильной работы нужны два значения: начало дня и конец дня. В качестве значений по умолчанию я передаю 360 и 1320 минут (6:00 и 22:00). Но я также хочу сделать их доступными из настроек, чтобы пользователь мог их изменить. В настройках есть два таймпикера:

    from.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DialogFragment timePicker1 = new TimePickerFragment();
            timePicker1.show(getSupportFragmentManager(), "BeginningChange");
            flag = true;
        }
    });

    to.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DialogFragment timePicker2 = new TimePickerFragment();
            timePicker2.show(getSupportFragmentManager(), "EndingChange");
            flag = false;
        }
    });

 @Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
    if (flag){
        timeStartChange = hourOfDay * 60 + minute;
        Intent intent = new Intent(SettingsActivity.this, IntervalsDialog.class);
        intent.putExtra("timeStartChanged", timeStartChange);
    }
    if (!flag){
        timeEndChange= hourOfDay * 60 + minute;
        Intent intent2 = new Intent(SettingsActivity.this, IntervalsDialog.class);
        intent2.putExtra("timeEndChanged", timeEndChange);
    }
}

Я думал, что могу передать их с помощью Intent, а затем просто проверить в другом классе:

private void setIntervals(){
    int dayStart;
    int dayEnd;
    Intent intent = getActivity().getIntent();
    dayStart = Integer.parseInt(intent.getStringExtra("timeStartChanged"));
    dayEnd = Integer.parseInt(intent.getStringExtra("timeEndChanged"));
    if (dayStart == 0 || dayEnd == 0){
        dayStart = 360;
        dayEnd = 1320;
    }
    ArrayList<Interval> idealInt = new ArrayList<>();
    int dayInterval = (dayEnd - dayStart)/4;
    for (int i = dayStart; i < dayEnd; i+= dayInterval) {
        idealInt.add(new Interval(i, i + dayInterval));
    }
    interval1.setText(idealInt.get(0).toString());
    interval2.setText(idealInt.get(1).toString());
    interval3.setText(idealInt.get(2).toString());
    interval4.setText(idealInt.get(3).toString());
}

Но я получаю сообщение об ошибке:

 java.lang.NumberFormatException: s == null
    at java.lang.Integer.parseInt(Integer.java:570)
    at java.lang.Integer.valueOf(Integer.java:794)
    at com.example.tryalgorithm.ui.IntervalsDialog.setIntervals(IntervalsDialog.java:90)
    at com.example.tryalgorithm.ui.IntervalsDialog.onCreateDialog(IntervalsDialog.java:79)
    ...

Это не кажется сложной задачей, но я не вижу своей ошибки ... Спасибо за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...