Как сохранить дату и время для определенной кнопки c? - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть одна кнопка для установки будильника. Я могу сохранить будильник и время для этой кнопки, но теперь я хочу добавить еще одну кнопку, где я могу установить другую дату и время. Я не знаю, как проверить, какая кнопка была нажата, и поэтому сохранить дату для этой кнопки. Вот что я сделал с помощью кнопки тревоги: Я создал два класса DatePickerFragment. java

public class DatePickerFragment extends DialogFragment{
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    // Use the current date as the default date in the picker
    Calendar c = Calendar.getInstance();
    int jahr = c.get(Calendar.YEAR);
    int monat = c.get(Calendar.MONTH);
    int tag = c.get(Calendar.DAY_OF_MONTH);

    // Create a new instance of DatePickerDialog and return it
    return new DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener) getActivity(), jahr, monat, tag);
}
}

и TimePickerFragmentDialog. java

public class TimePickerFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
    Calendar c = Calendar.getInstance();
    int hour = c.get(Calendar.HOUR_OF_DAY);
    int minute = c.get(Calendar.MINUTE);
    return new TimePickerDialog(getActivity(), (TimePickerDialog.OnTimeSetListener) getActivity(), hour, minute, DateFormat.is24HourFormat(getActivity()));
}
}

В моей деятельности. java У меня есть этот код

private StringBuilder ausgewaelteDatum;
AlarmButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DialogFragment datePicker = new DatePickerFragment();
            datePicker.show(getSupportFragmentManager(), "date picker");
        }
    });

@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
    Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month);
    c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
    ausgewaelteDatum = new StringBuilder(DateFormat.getDateInstance(DateFormat.MEDIUM).format((c.getTime())));


    DialogFragment timePicker = new TimePickerFragment();
    timePicker.show(getSupportFragmentManager(), "time picker");
}

@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
    ausgewaelteDatum.append(", " + hourOfDay + ":" + minute);
    AlarmButton.setText(ausgewaelteDatum.toString());
}

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

DatumButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            DialogFragment datePicker = new DatePickerFragment();
            datePicker.show(getSupportFragmentManager(), "date picker");
        }
    });

1 Ответ

1 голос
/ 25 февраля 2020

Вы можете сделать что-то вроде этого:

class MainActivity ... {

    private int clicked = 0;

    private static final int NOBODY = 0;
    private static final int ALARM = 1;
    private static final int DATUM = 2;

    private StringBuilder ausgewaelteDatum;
    private Button AlarmButton, DatumButton; //Consider using standard case notation

    @Override
    ... onCreate(...) {
        AlarmButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                clicked = ALARM;
                DialogFragment datePicker = new DatePickerFragment();
                datePicker.show(getSupportFragmentManager(), "date picker");
            }
        });

        DatumButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                clicked = DATUM;
                DialogFragment datePicker = new DatePickerFragment();
                datePicker.show(getSupportFragmentManager(), "date picker");
            }
        });
    }

    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        Calendar c = Calendar.getInstance();
        c.set(Calendar.YEAR, year);
        c.set(Calendar.MONTH, month);
        c.set(Calendar.DAY_OF_MONTH, dayOfMonth);

        ausgewaelteDatum = new StringBuilder(DateFormat.getDateInstance(DateFormat.MEDIUM).format((c.getTime())));

        DialogFragment timePicker = new TimePickerFragment();
        timePicker.show(getSupportFragmentManager(), "time picker");
    }

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

        ausgewaelteDatum.append(", " + hourOfDay + ":" + minute);

        if (clicked == ALARM)
            AlarmButton.setText(ausgewaelteDatum.toString());
        else if (clicked == DATUM)
            DatumButton.setText(ausgewaelteDatum.toString());

        clicked = NOBODY;
    }
}

Если я понял вашу проблему.

...