Как получить из CalendarView выбранную дату пользователем

Рейтинг: 0Ответов: 1Опубликовано: 22.04.2023

у меня есть андроид приложение для заметок, написанный на языке 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;
    }
}

помогите, пожалуйста!

Ответы

▲ 0

вопрос решен!!!

вот если что код для 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!");
            }
        });
    }
}