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:
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);
}
};
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
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.
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();
}
});