Как получить из 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;
}
}
помогите, пожалуйста!
Ответы (1 шт):
Автор решения: sun shine
→ Ссылка
вопрос решен!!!
вот если что код для CalendarActivity:
public class CalendarActivity extends AppCompatActivity {
CalendarView calendar;
TextView date_view;
Button AddnoteBtn;
boolean dateselected;
Calendar selectedDate;
@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) -> {
selectedDate = Calendar.getInstance();
selectedDate.set(year, month, dayOfMonth);
SimpleDateFormat dateFormat = new SimpleDateFormat("MM.dd.yyyy", Locale.US);
String formattedDate = dateFormat.format(selectedDate.getTime());
date_view.setText(formattedDate);
dateselected = true;
AddnoteBtn.setVisibility(View.VISIBLE);
});
AddnoteBtn.setOnClickListener((v) -> {
if (dateselected) {
Intent intent = new Intent(this, NoteDetailsActivity.class);
long selectedDateInMillis = selectedDate.getTimeInMillis();
intent.putExtra("selected_date_in_millis", selectedDateInMillis);
startActivity(intent);
}
});
}
public boolean isdataselected() {
return dateselected;
}
}
и для NoteDetailsActivity:
public class NoteDetailsActivity extends AppCompatActivity {
EditText titleEditText, contentEditText;
ImageButton saveNoteBtn;
TextView pageTitleTextView;
String title, content, docId;
boolean isEditMode = false;
TextView deleteNoteTextViewBtn;
@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);
// 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 (getIntent().hasExtra("selected_date_in_millis")) {
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!");
}
});
}
}