2015-05-25 4 views
1

Я пытаюсь добавить Date Picker в мой код, но ошибка показывается над «pickerListener» внутри «fromDate_textView.setOnClickListener», говоря:дата ошибки сборщика показ

pickerListener не может быть решен в переменная

Может ли кто-нибудь помочь мне решить проблему?

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)); 
     } 
    }); 

    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(" ")); 

     } 
    }; 

ответ

0

Вы должны объявить pickerListener перед установкой OnClickListener и сделать pickerListener финал, так что она может быть доступна внутри OnClickListener. Это должно работать:

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: я объединил мой первый ответ с ответом Санджит Ajnabee в. Надеюсь, это сработает для вас! У меня не было проблем, когда я тестировал его.

+0

Выполнение, как вы сказали, ошибки в «DatePickerDialog» внутри onClickListener, упоминание «Метод DatePickerDialog (Sell_Product_Activity, DatePickerDialog.OnDateSetListener, int, int, int) является undefined для типа new View.OnClickListener() {} ". –

+0

Вы пишите Sell_Product_Activity вместо Sell_Product_Activity.this? –

0

Измените 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

Снова я столкнулся с той же ошибкой: «pickerListener не может быть разрешен переменной». –

1

Используйте этот код может решить вашу проблему, Сво работает отлично

// 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

в моем коде дата формат также модифицировано. – Mano

0

Спасибо за ваш ответ. На самом деле проблема связана с библиотекой Monkey Talk, которую я использовал в проекте. После удаления этой библиотеки сборщик дат начал работать нормально

Смежные вопросы