ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • button을 눌러 날짜 선택자를 호출하려면 어떻게합니까?
    카테고리 없음 2020. 8. 14. 14:42

    질문

    날짜를 선택할 수있는 앱을 만들려고하는데 그날의 Promise으로 테이블이 채워집니다. 날짜 선택자를 표시하는 데 문제가 있습니다.

    https://developer.android.com/guide를살펴보았습니다./topics/ui/controls/pickers 및이 코드에서 날짜 선택자를 만들었습니다. AddAppointmentActivityclass에있는 button 누름에서 해당 날짜 선택자를 호출하고 싶습니다.

    내 Promise 수업은 다음과 같습니다.

    package com.example.dentdevils.ui.HomeLinks;
    
    import androidx.annotation.NonNull;
    import androidx.annotation.Nullable;
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.fragment.app.DialogFragment;
    
    import android.app.DatePickerDialog;
    import android.app.Dialog;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.DatePicker;
    import android.widget.TextView;
    
    import com.example.dentdevils.R;
    import com.example.dentdevils.ui.HomeActivity;
    
    
    import java.util.Calendar;
    
    public class AddAppointmentActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_add_appointment);
    
            // Date label
            TextView dateLabel = (TextView) findViewById(R.id.txtDateLabel);
    
            // Date Picker Button Functionality
            Button datePicker = (Button) findViewById(R.id.btnDatePicker);
            datePicker.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                }
            });
    
            // Back Button Functionality
            Button btnBack = (Button) findViewById(R.id.btnBack);
            btnBack.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent launchHomepage = new Intent(AddAppointmentActivity.this, HomeActivity.class);
                    startActivity(launchHomepage);
                }
            });
        }
    
    }
    
    class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
    
        @NonNull
        @Override
        public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
            final Calendar calendar = Calendar.getInstance();
            int year = calendar.get(Calendar.YEAR);
            int month = calendar.get(Calendar.MONTH);
            int day = calendar.get(Calendar.DAY_OF_MONTH);
    
            return new DatePickerDialog(getActivity(), this, year, month, day);
        }
    
        @Override
        public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
            // Get date set by user and display appointments in table for the date chosen.
    
        }
    
        public void showDatePickerDialog() {
            DialogFragment newFragment = new com.example.dentdevils.ui.HomeLinks.DatePickerFragment();
            newFragment.show(getFragmentManager(), "datePicker");
        }
    
    }

    나는 별도의 파일에 class를 가지고 있었지만 다른 것을 테스트했기 때문에 왜 같은 파일에 있는지 테스트했습니다 (날짜 선택자를 호출 한 후에 다시 별도의 파일로 옮길 것입니다).

    내 질문은 button 누름에서 날짜 선택자 대화 상자를 어떻게 호출합니까?


    답변1

    datePicker.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
                DialogFragment newFragment = new DatePickerFragment();
                newFragment.show(getSupportFragmentManager(), "datePicker");
    
    
            }
        });


    답변2

    날짜 선택자에 대한 추가 대화 Fragment을 만들 필요가 없습니다. DatePickerDialog객체를 만들고 show () 를 호출하면됩니다.

    예:

    val calendar = Calendar.getInstance()
    
    val dialog = DatePickerDialog(context,
                        DatePickerDialog.OnDateSetListener { view, year, month, dayOfMonth ->
                            // TODO
                        }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH))
    
    dialog.show()


     

     

     

     

    출처 : https://stackoverflow.com/questions/62552807/how-do-i-call-my-date-picker-from-a-button-press

    댓글

Designed by Tistory.