【问题标题】:Custom DatePicker On EditTextEditText 上的自定义 DatePicker
【发布时间】:2015-05-01 11:34:59
【问题描述】:

我有 2 个EditText

当任何人单击EditText 时,会显示日期选择器以在EditText 中设置日期。所以我对EditText 的编码是

    sdate.setOnTouchListener( new DrawableClickListener.RightDrawableClickListener(sdate)
                {
                    @Override
                    public boolean onDrawableClick()
                    {
                         MyDatePickerDialog(sdate);// put edit text view. 
                          return true;                     
                    }                   
                } );
                edate.setOnTouchListener( new DrawableClickListener.RightDrawableClickListener(edate)
                {
                    @Override
                    public boolean onDrawableClick()
                    {
                         MyDatePickerDialog(edate);// put edit text view. 
                         return true;                   
                    }
                } );

我的自定义日期选择器是

    private void MyDatePickerDialog(final EditText sdate) {
        Toast.makeText(getApplicationContext(),"sdgfdg" , Toast.LENGTH_LONG).show();
        DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {

            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                // TODO Auto-generated method stub
                myCalendar.set(Calendar.YEAR, year);
                myCalendar.set(Calendar.MONTH, monthOfYear);
                myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                updateLabel();
            }

            private void updateLabel() {
                 String myFormat = "MM/dd/yy"; //In which you need put here
                    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

                    sdate.setText(sdf.format(myCalendar.getTime()));
            }

        };

    }

但问题是显示了 toast 消息,但它没有显示 datepicker

【问题讨论】:

  • Dialog在哪里定义并设置了这个监听器?
  • 这是标准对话框选择器 @AnandMakwana import android.app.DatePickerDialog;
  • show() 方法在哪里??
  • 显示方法@PiyushGupta,如果我删除方法并直接调用它会显示....但是显示你需要的方法
  • @tufan 检查我的答案。

标签: android datepicker android-calendar android-toast


【解决方案1】:

您只有一个自定义方法,您需要为OnDateSetListener 创建一个侦听器以传递您的DatePickerDialog

 private void MyDatePickerDialog(final EditText sdate) {
    Toast.makeText(getApplicationContext(),"sdgfdg" , Toast.LENGTH_LONG).show();
     Calendar newCalendar = Calendar.getInstance();
     DatePickerDialog myPickerDialog = new DatePickerDialog(this, new OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

            updateLabel();
        }

    },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));

        private void updateLabel() {
             String myFormat = "MM/dd/yy"; //In which you need put here
                SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
                sdate.setText(sdf.format(newCalendar.getTime()));
        }

    myPickerDialog.show();

  }

注意:您可以使用onClickListener 代替onTouchListener

【讨论】:

    【解决方案2】:

    您只创建了 DatePickerDialog 的 Listener,而不是 DatePickerDialog 本身。

    你必须这样做:

    DatePickerDialog datePickerDialog = new DatePickerDialog(
                    getApplicationContext(), your Listener, year, month, dayOfMonth);
            datePickerDialog.show();
    

    【讨论】:

    • 是的,我创建了它,但我有 2 个编辑文本,所以我删除它检查它pastie.org/10123331#2-3,17,19-20,24
    • 你必须把它放在MyDatePickerDialog()函数的末尾。
    猜你喜欢
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2017-03-23
    • 1970-01-01
    相关资源
    最近更新 更多