Дифференциация фрагментов выбора времени - PullRequest
0 голосов
/ 13 декабря 2018

Я столкнулся с проблемой, когда мое приложение работает должным образом, а кнопки работают должным образом, но текстовое поле, которое я редактирую с использованием двух фрагментов выбора времени, редактируется как средством выбора времени начала, так и средством выбора времени окончания.

public class MainActivity extends AppCompatActivity implements TimePickerDialog.OnTimeSetListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button_start = (Button) findViewById(R.id.start_picker_button);
        button_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DialogFragment timePicker1 = new TimePickerStartFragment();
                timePicker1.show(getSupportFragmentManager(),"time picker start");
            }
        });

        Button button_end = (Button) findViewById(R.id.end_picker_button);
        button_end.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                DialogFragment timePicker2 = new TimePickerEndFragment();
                timePicker2.show(getSupportFragmentManager(),"time picker end");
            }
        });

    }

    @Override
    public void onTimeSet(TimePicker TimePickerStartFragment, int hourOfDay, int minute) {
        TextView textView = (TextView)findViewById(R.id.textView);
        textView.setText("Hour: " + hourOfDay + " " + "Minute: " + minute);

Мое приложение выглядит как две кнопки, одна для фрагмента времени начала, а другая для фрагмента времени окончания.У меня есть два отдельных фрагмента времени java файлы.Однако, когда я устанавливаю фрагмент времени окончания, он все равно изменяет текст времени начала.Я хочу, чтобы средство выбора времени начала изменяло только текст времени начала, а средство выбора времени окончания изменяло текст времени окончания.

Чтобы дополнительно уточнить, когда нажимается кнопка выбора времени начала, TimePickerStratFragment открывается и выбирается время, это изменяет текстовое поле с именем textView.Однако, когда фрагмент кнопки времени окончания выбран, он также изменяет текстовое представление.Я хочу, чтобы кнопка окончания времени не изменяла текстовое представление.

1 Ответ

0 голосов
/ 13 декабря 2018

Добавьте строковое значение, чтобы проверить, какой таймер открыт, потому что onTimeSet запускается для обоих фрагментов, используйте что-то вроде этого

String timeTag;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button_start = (Button) findViewById(R.id.start_picker_button);
        button_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                timeTag = "from";
                DialogFragment timePicker1 = new TimePickerStartFragment();
                timePicker1.show(getSupportFragmentManager(),"time picker start");
            }
        });

        Button button_end = (Button) findViewById(R.id.end_picker_button);
        button_end.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                timeTag = "to";
                DialogFragment timePicker2 = new TimePickerEndFragment();
                timePicker2.show(getSupportFragmentManager(),"time picker end");
            }
        });

    }

    @Override
    public void onTimeSet(TimePicker TimePickerStartFragment, int hourOfDay, int minute) {

        if(Objects.equals(timeTag, "from")) {
            TextView textView = (TextView)findViewById(R.id.textView);
            textView.setText("Hour: " + hourOfDay + " " + "Minute: " + minute);
        }

        if(Objects.equals(timeTag, "to")) {

        }
}
...