У меня есть какой-то сборщик дат, результат которого хранится в Firebase. На этапе регистрации пользователь выбирает дату из DatePickerDialog
, дата обновляется в TextView
, а затем отправляется в базу данных Firebase.
В своей основной деятельности я хочу получить данные из Firebase,и покажите пользователю, сколько месяцев и дней осталось до события.
Есть средство выбора даты:
public class UserDetailsFragment extends Fragment {
EditText etEventDate;
Button eventDatePicker;
Calendar c;
DatePickerDialog dpd;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_user_details, container, false);
etEventDate = view.findViewById(R.id.etEventDate);
eventDatePicker = view.findViewById(R.id.eventDatePicker);
eventDatePicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
c = Calendar.getInstance();
int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH);
int year = c.get(Calendar.YEAR);
dpd = new DatePickerDialog(getActivity(), R.style.DialogTheme, new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int mYear, int mMonth, int mDay) {
etEventDate.setText(mDay + "/" + (mMonth + 1) + "/" + mYear);
}
}, day, month, year);
dpd.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
dpd.show();
}
});
return view;
}
}
То, как я отправил его в firebase:
public void signUp(String email, String password) {
validation = new EmailAndPasswordValidation();
if (validation.isValidEmail(email)) {
mAuth.createUserWithEmailAndPassword(email, password)
.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
public void onSuccess(AuthResult authResult) {
user.child(mAuth.getCurrentUser().getUid()).child("UserDetails")
.setValue(model.getUserInputDetails())
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
model.showRegisterSuccessToast();
//TODO change open splash activity to open main activity.
model.openSplashActivity();
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d("Failed", "Data base write failed");
}
});
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d("Failed", "Registration failed");
}
});
}
}
@Override
public UserSingleton getUserInputDetails() {
UserSingleton userSingleton = UserSingleton.getInstance();
UserSingleton.getInstance().setmUserName(((EditText) userDetailsFragment.getView().findViewById(R.id.etName)).getText().toString().trim());
UserSingleton.getInstance().setmPartnerName(((EditText) userDetailsFragment.getView().findViewById(R.id.etPartnerName)).getText().toString().trim());
UserSingleton.getInstance().setmEventDate(((EditText) userDetailsFragment.getView().findViewById(R.id.etEventDate)).getText().toString().trim());
UserSingleton.getInstance().setmEventLocation(((EditText) userDetailsFragment.getView().findViewById(R.id.etEventLocation)).getText().toString().trim());
return userSingleton;
}
Ожидаемый результат: