Как получить из CalendarView выбранную дату пользователем
у меня есть андроид приложение для заметок, написанный на языке java. когда добавляешь заметку, он сохраняется с текущим временем, но также есть календарь. думалось, сделать так, чтобы можно было выбрать дату и написать туда заметку. но проблема в том, что он сохраняется только с текущей датой.
это код NoteDetailsActivity:
public class NoteDetailsActivity extends AppCompatActivity {
EditText titleEditText,contentEditText;
ImageButton saveNoteBtn;
TextView pageTitleTextView;
String title,content,docId;
boolean isEditMode = false;
TextView deleteNoteTextViewBtn;
boolean isdataselected = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_note_details);
titleEditText = findViewById(R.id.notes_title_text);
contentEditText = findViewById(R.id.notes_content_text);
saveNoteBtn = findViewById(R.id.save_note_btn);
pageTitleTextView = findViewById(R.id.page_title);
deleteNoteTextViewBtn = findViewById(R.id.delete_note_text_view_btn);
isdataselected = getIntent().getBooleanExtra("isdataselected", false);
//receive data
title = getIntent().getStringExtra("title");
content= getIntent().getStringExtra("content");
docId = getIntent().getStringExtra("docId");
if(docId!=null && !docId.isEmpty()){
isEditMode = true;
}
titleEditText.setText(title);
contentEditText.setText(content);
if(isEditMode){
pageTitleTextView.setText("Edit your note");
deleteNoteTextViewBtn.setVisibility(View.VISIBLE);
}
saveNoteBtn.setOnClickListener( (v)-> saveNote());
deleteNoteTextViewBtn.setOnClickListener((v)-> deleteNoteFromFirebase() );
}
void saveNote(){
String noteTitle = titleEditText.getText().toString();
String noteContent = contentEditText.getText().toString();
if(noteTitle.isEmpty()){
titleEditText.setError("Title is required");
return;
}
Note note = new Note();
note.setTitle(noteTitle);
note.setContent(noteContent);
if (isdataselected) {
long selectedDateInMillis = getIntent().getLongExtra("selected_date_in_millis", 0);
Date selectedDate = new Date(selectedDateInMillis);
Timestamp timestamp = new Timestamp(selectedDate);
note.setTimestamp(timestamp);
} else {
note.setTimestamp(Timestamp.now());
}
saveNoteToFirebase(note);
}
void saveNoteToFirebase(Note note){
DocumentReference documentReference;
if(isEditMode){
//update the note
documentReference = Utility.getCollectionReferenceForNotes().document(docId);
}else{
//create new note
documentReference = Utility.getCollectionReferenceForNotes().document();
}
documentReference.set(note).addOnCompleteListener(task -> {
if(task.isSuccessful()){
//note is added
Utility.showToast(NoteDetailsActivity.this,"jazba satti qosyldy!");
finish();
}else{
Utility.showToast(NoteDetailsActivity.this,"qate! jazba qosylmady");
}
});
}
void deleteNoteFromFirebase(){
DocumentReference documentReference;
documentReference = Utility.getCollectionReferenceForNotes().document(docId);
documentReference.delete().addOnCompleteListener(task -> {
if(task.isSuccessful()){
//note is deleted
Utility.showToast(NoteDetailsActivity.this,"jazba satti oshirildi!");
finish();
}else{
Utility.showToast(NoteDetailsActivity.this,"qate! jazba oshirilmedi!");
}
});
}
}
это код CalendarActivity:
public class CalendarActivity extends AppCompatActivity {
CalendarView calendar;
TextView date_view;
Button AddnoteBtn;
boolean dateselected;
long selectedDateInMillis;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calendar);
dateselected = false;
AddnoteBtn = findViewById(R.id.add_note_btn);
calendar = findViewById(R.id.calendar);
date_view = findViewById(R.id.date_view);
calendar
.setOnDateChangeListener(
(view, year, month, dayOfMonth) -> {
String Date
= dayOfMonth + "."
+ (month + 1) + "." + year;
date_view.setText(Date);
dateselected = true;
selectedDateInMillis = calendar.getDate();
AddnoteBtn();
});
}
void AddnoteBtn() {
AddnoteBtn.setVisibility(View.VISIBLE);
AddnoteBtn.setOnClickListener((v) -> {
Intent intent = new Intent(this, NoteDetailsActivity.class);
intent.putExtra("isdataselected", dateselected);
intent.putExtra("selected_date_in_millis", selectedDateInMillis);
startActivity(intent);
});
}
public boolean isdataselected() {
return dateselected;
}
}
помогите, пожалуйста!
Источник: Stack Overflow на русском