Вопрос

I have searched a lot and need to know the best way possible to select a date from a calendar, I am already trying a fragment such as

FragmentManager manager=getFragmentManager(); FragmentTransaction transaction=manager.beginTransaction();

DialogFragment fragment=new DatePickerDialogFragment(MainActivity.this); fragment.show(transaction, "date_dialog");

but have errors regarding imports , as they are conflicting i believe... really need a way out, does anyone have a good solution , please do let me know i need it!

Это было полезно?

Решение

I like to do this with Dialog. First of all, set android:focusable="false" on your EditText in your xml.

Then you can try something like this:

yourEditText = (EditText) findViewById(R.id.yourEditTextID);
        yourEditText.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                // To show current date in the datepicker
                Calendar mcurrentDate = Calendar.getInstance();
                mYear = mcurrentDate.get(Calendar.YEAR);
                mMonth = mcurrentDate.get(Calendar.MONTH);
                mDay = mcurrentDate.get(Calendar.DAY_OF_MONTH);

                DatePickerDialog mDatePicker = new DatePickerDialog(yourActivity.this, new OnDateSetListener() {
                    public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) {
                        Calendar myCalendar = Calendar.getInstance();
                        myCalendar.set(Calendar.YEAR, selectedyear);
                        myCalendar.set(Calendar.MONTH, selectedmonth);
                        myCalendar.set(Calendar.DAY_OF_MONTH, selectedday);
                        String myFormat = "dd/MM/yy"; //Change as you need
                        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.FRANCE);
                        yourEditText.setText(sdf.format(myCalendar.getTime()));

                        mDay = selectedday;
                        mMonth = selectedmonth;
                        mYear = selectedyear;
                    }
                }, mYear, mMonth, mDay);
                //mDatePicker.setTitle("Select date");
                mDatePicker.show();
            }
        });

Where mYear,mMonth and mDay are global int.

Другие советы

You can try something like this

DatePicker mDlgDatePicker = new DatePickerDialog(getActivity(), new OnDateSetListener() {
@Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
    mEdtxDate.setText(year + "-" + (monthOfYear + 1 < 10 ? "0" : "") + (monthOfYear + 1) + "-"
                            + (dayOfMonth < 10 ? "0" : "") + dayOfMonth);
                }
  }, 2014, 1, 1);
  mDlgDatePicker.show();

KOTLIN DATE PICKER WITH SELECTED DATE AS DEFAULT DATE

  1. Initially add this code as a global scope, somewhere above or outside of onCreate()

     //this will show default date as current date initially
     private val currentDate: Calendar = Calendar.getInstance()
     private var year = currentDate[Calendar.YEAR]
     private var month = currentDate[Calendar.MONTH]
     private var day = currentDate[Calendar.DAY_OF_MONTH]
    
  2. on your TextView, add this OnClickListener:

     binding.tvDate.setOnClickListener {
         selectDate()
     }
    
  3. Here is your selectDate() Function:

     private fun selectDate() {
     val mDatePicker = DatePickerDialog(
         this,
         { _, selectedYear, selectedMonth, selectedDay ->
             val myFormat = AppConstants.DateFormat.DF_dd_MM_yy
             val sdf = SimpleDateFormat(myFormat, Locale.getDefault())
             day = selectedDay
             month = selectedMonth
             year = selectedYear
             currentDate.set(year, month, day)
             binding.tvDate.text = sdf.format(currentDate.time)
         }, year, month, day
     )
    
     mDatePicker.show()
     mDatePicker.getButton(AlertDialog.BUTTON_POSITIVE)
         .setTextColor(ContextCompat.getColor(this, R.color.purple))
    
     mDatePicker.getButton(AlertDialog.BUTTON_NEGATIVE)
         .setTextColor(ContextCompat.getColor(this, R.color.purple))
    

    }

Here. DF_dd_MM_yyyy is const val DF_dd_MM_yyyy = "dd/MM/yyyy"

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top