Многофункциональный слушатель - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть такой код

    private void Picker() {
    Calendar now = Calendar.getInstance();
    Calendar maxDate = Calendar.getInstance();
    maxDate.add(Calendar.MONTH, 1);
    Calendar minDate = Calendar.getInstance();
    minDate.add(Calendar.DAY_OF_YEAR, 1);
    dataController = DatePickerDialog.newInstance(
            controller.this,
            now.get(Calendar.YEAR),
            now.get(Calendar.MONTH),
            now.get(Calendar.DAY_OF_MONTH)
    );

    dataController.setMinDate(minDate);
    dataController.setMaxDate(maxDate);
    dataController.setTitle("Data awizacji");

    inputdataController.setFocusable(false);

    inputdataController.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            datadataController.show(getFragmentManager(), "Data");
        }
    });


    Calendar from = Calendar.getInstance();
    Calendar frommaxDate = Calendar.getInstance();
    frommaxDate.add(Calendar.MONTH, 1);
    Calendar fromminDate = Calendar.getInstance();
    fromminDate.add(Calendar.DAY_OF_YEAR, 1);
    dataControllerSecond = DatePickerDialog.newInstance(
            controller.this,
            from.get(Calendar.YEAR),
            from.get(Calendar.MONTH),
            from.get(Calendar.DAY_OF_MONTH)
    );

   dataControllerSecond.setMinDate(fromminDate);
    dataControllerSecond.setMaxDate(frommaxDate);
    dataControllerSecond.setTitle("Data awizacji DO");

    inputdataControllerSecond.setFocusable(false);

    inputdataControllerSecond.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            dataControllerSecond.show(getFragmentManager(), "Data spotkania");
        }
    });

}


@Override
public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
    now = Calendar.getInstance();
    now.set(year, monthOfYear, dayOfMonth);
inputdataController.setText(dateFormatter.format(now.getTime()));

    from = Calendar.getInstance();
    from.set(year, monthOfYear, dayOfMonth);
 inputdataControllerSecond.setText(dateFormatter.format(from.getTime()));
}

, и я не знаю, как сделать два входа независимыми друг от друга ... Я имею в виду, когда я выбираю один вариант из одного из входов, он выбирает ввсе они ... я хочу сделать два независимых свидания ... ты знал, что я не прав?Я видел один вопрос с ответом, в котором говорилось, что это заставляет другого слушателя, но я сделал, и это все еще не работает правильно. Я запутался, и я не знаю, как это сделать ... Это так раздражает меня ... может кто-тоПомогите?:) (Мне не нужен идеальный код, мне просто нужны подсказки, что я сделал плохо ..)

1 Ответ

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

Объявите переменную на уровне класса:

int type = 1;

и измените ваших слушателей:

inputdataController.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        type = 1;
        datadataController.show(getFragmentManager(), "Data");
    }
});

и

inputdataControllerSecond.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        type = 2;
        dataControllerSecond.show(getFragmentManager(), "Data spotkania");
    }
});

затем в onDateSet()

@Override
public void onDateSet(DatePickerDialog view, int year, int monthOfYear, int dayOfMonth) {
    if (type == 1) {
        now = Calendar.getInstance();
        now.set(year, monthOfYear, dayOfMonth);
        inputdataController.setText(dateFormatter.format(now.getTime()));
    } else if (type == 2) {
        from = Calendar.getInstance();
        from.set(year, monthOfYear, dayOfMonth);
        inputdataControllerSecond.setText(dateFormatter.format(from.getTime()));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...