Reputation: 445
I currently have one button to set an alarm. I can save the alarm and the time to this button, but now I want to add another button where I can set another date and time. I don't know how to check which button was clicked and so save the date to this button.
This is what I did it with the alarm button:
I created two classes
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);
}
}
and 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()));
}
}
In my Activity.java I have this code
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());
}
Now I added this code for the second button, but I don't know how to continue. Maybe I could pass the clicked button when I create a new fragment, but I don't know if that's possible
DatumButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment datePicker = new DatePickerFragment();
datePicker.show(getSupportFragmentManager(), "date picker");
}
});
Upvotes: 0
Views: 187
Reputation: 1890
You can do something like this:
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;
}
}
If I understood your problem.
Upvotes: 1