date picker showing error

前端 未结 4 1354

I\'m trying to add a Date Picker to my code, but an error is being shown over \"pickerListener\" inside the \"fromDate_textView.setOnClickListener\" saying:

相关标签:
4条回答
  • 2020-12-22 03:17

    Use this Code may solve your Problem, Its working fine

      // for date picker
    
            private int year;
            private int month;
            private int day;
            static final int DATE_PICKER_ID = 1111;
    
    // for date picker
        private EditText m3_DateDisplay;
    
        @Override
            protected void onCreate(Bundle savedInstanceState) 
        {
    
            super.onCreate(savedInstanceState);
    
    m3_DateDisplay = (EditText) findViewById(R.id.editText3);
    
    
             // Get current date by calender
    
            final Calendar c = Calendar.getInstance();
            year = c.get(Calendar.YEAR);
            month = c.get(Calendar.MONTH);
            day = c.get(Calendar.DAY_OF_MONTH);
    
            // Show current date
    
            /*m3_DateDisplay.setText(new StringBuilder()
                    // Month is 0 based, just add 1
                    .append(day).append("-").append(month + 1).append("-")
                    .append(year).append(" "));*/
    
    
            // Show selected date
            StringBuilder dateValue1=new StringBuilder().append(day).append("-")
            .append(month + 1).append("-").append(year).append(" ");
    
    
            //for Converting Correct Date format Save into Database
            SimpleDateFormat sdf123 = new SimpleDateFormat("dd-MM-yyyy");
            String abs1= dateValue1.toString();
            Date testDate1 = null;
             try {
                testDate1 = sdf123.parse(abs1);
            } catch (ParseException e) {
    
                e.printStackTrace();
            }
            SimpleDateFormat formatter1 = new SimpleDateFormat("dd-MM-yyyy");
            String DateFormat=formatter1.format(testDate1);
    
            m3_DateDisplay.setText(DateFormat);
    
    
    
                m3_DateDisplay.setFocusable(false);
                m3_DateDisplay.setInputType(InputType.TYPE_NULL);
                m3_DateDisplay.setOnClickListener(new View.OnClickListener() {
                    @SuppressWarnings("deprecation")
                    @Override
                    public void onClick(View v) {
                        showDialog(DATE_PICKER_ID);
                    }
                });
    
        }
    
        @Override
            protected Dialog onCreateDialog(int id)
            {
                switch (id) {
                case DATE_PICKER_ID:
    
                    // open datepicker dialog.
                    // set date picker for current date
                    // add pickerListener listner to date picker
                    //return new DatePickerDialog(this, pickerListener, year, month, day);
    
                    /////Only Show till Date Not More than That.
                        DatePickerDialog dialog = new DatePickerDialog(this, pickerListener, year, month, day);
                        dialog.getDatePicker().setMaxDate(new Date().getTime());
                        return dialog;
                }
                return null;
            }
    
            private DatePickerDialog.OnDateSetListener pickerListener = new DatePickerDialog.OnDateSetListener()
            {
    
                // when dialog box is closed, below method will be called.
                @Override
                public void onDateSet(DatePicker view, int selectedYear,
                        int selectedMonth, int selectedDay) {
    
                    year = selectedYear;
                    month = selectedMonth;
                    day = selectedDay;
    
    
    
                    // Show selected date
                                StringBuilder dateValue=new StringBuilder().append(day).append("-")
                                .append(month + 1).append("-").append(year).append(" ");
    
    
                    //for Converting Correct Date format Save into Database
                        SimpleDateFormat sdf123 = new SimpleDateFormat("dd-MM-yyyy");
                                String abs1= dateValue.toString();
                                Date testDate1 = null;
                                 try {
                                    testDate1 = sdf123.parse(abs1);
                                } catch (ParseException e) {
    
                                    e.printStackTrace();
                                }
                    SimpleDateFormat formatter1 = new SimpleDateFormat("dd-MM-yyyy");
                                String DateFormat=formatter1.format(testDate1);
    
                                m3_DateDisplay.setText(DateFormat);
    
    
                }
            };
    
    0 讨论(0)
  • 2020-12-22 03:23

    Thanks for your answer. The problem is actually with "Monkey Talk" library which I used in project. Once after removing this lib, date picker started working fine

    0 讨论(0)
  • 2020-12-22 03:32

    You have to declare pickerListener before setting the OnClickListener and make pickerListener final so that it can be accessed inside the OnClickListener. This should work:

    final DatePickerDialog.OnDateSetListener pickerListener = new DatePickerDialog.OnDateSetListener() {
    
        // when dialog box is closed, below method will be called.
        @Override
        public void onDateSet(DatePicker view, int selectedYear,
                int selectedMonth, int selectedDay) {
    
            year = selectedYear;
            month = selectedMonth;
            day = selectedDay;
    
            // Show selected date
            fromDate_textView.setText(new StringBuilder().append(month + 1)
                    .append("-").append(day).append("-").append(year)
                    .append(" "));
    
        }
    };
    
    fromDate_textView.setOnClickListener(new View.OnClickListener() {
    
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            DatePickerDialog datePickerDialog= new DatePickerDialog(Sell_Product_Activity.this,
            pickerListener, year, month, day);
            datePickerDialog.show();
        }
    });
    

    EDIT: I combined my first answer with Sanjeet Ajnabee's answer. I hope it works for you! It made no problems when I tested it.

    0 讨论(0)
  • 2020-12-22 03:43

    Modify the code-

    fromDate_textView.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                showDialog(DatePickerDialog(Sell_Product_Activity.this,
                        pickerListener, year, month, day));
            }
        });
    

    AS-

    fromDate_textView.setOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                DatePickerDialog datePickerDialog= new DatePickerDialog(this,
                pickerListener, year, month, day);
                datePickerDialog.show();
            }
        });
    
    0 讨论(0)
提交回复
热议问题