问题
I am trying to launch DataPicker on click of the edit text
What am i trying to do::
- there are tow edit text
- I want to launch datepicker from both edit text
What i have done ::
I have tried to do this
I have taken one of the edittext as sample
Problem::
date picker is not launching when i click on edittext
no errors in logcat
MainActivity.java
public class MainActivity extends FragmentActivity {
EditText edt;
EditText edt2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edt=(EditText)findViewById(R.id.editText1);
edt2=(EditText)findViewById(R.id.editText2);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar c = Calendar.getInstance();
Calendar c1=Calendar.getInstance();
c1.setTime(new Date());
c.setTime(new Date()); // Now use today date.
c.add(Calendar.DATE, 7); // Adding 7 days
String ToDate = sdf.format(c.getTime());
String FromDate = sdf.format(c1.getTime());
edt2.setText(FromDate);
edt.setText(ToDate);
}
public void selectDate(View view) {
DialogFragment newFragment = new SelectDateFragment();
newFragment.show(getSupportFragmentManager(), "DatePicker");
}
public void populateSetDate(int year, int month, int day) {
edt2 = (EditText)findViewById(R.id.editText1);
edt2.setText(day+"/"+month+"/"+year);
}
public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar calendar = Calendar.getInstance();
int yy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, yy, mm, dd);
}
public void onDateSet(DatePicker view, int yy, int mm, int dd) {
populateSetDate(yy, dd, mm+1);
}
}
}
回答1:
DatePicker is not launching because you have not set the onClickListener for your EditText in your code.
Set the click listener as below for both your EditText.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edt=(EditText)findViewById(R.id.editText1);
edt2=(EditText)findViewById(R.id.editText2);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar c = Calendar.getInstance();
Calendar c1=Calendar.getInstance();
c1.setTime(new Date());
c.setTime(new Date()); // Now use today date.
c.add(Calendar.DATE, 7); // Adding 7 days
String ToDate = sdf.format(c.getTime());
String FromDate = sdf.format(c1.getTime());
edt2.setText(FromDate);
edt.setText(ToDate);
edt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
selectDate(v);
}
});
edt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
selectDate(v); //Pass the View as parameter.
}
});
}
回答2:
You just implements Edittext onClickListner onClick() Event:
edt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
// new DatePickerDialog(ProximityActivity.this, dateD, myCalendar
//.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
//myCalendar.get(Calendar.DAY_OF_MONTH)).show();
//Load your DiaglogFragment Over here
}
});
回答3:
Didn't you forget to set your onClickListener in your onCreate? Or is it handle in your xml?
edt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
selectDate(null);//I set null cause I don't know in the function what should the view be.
}
});
来源:https://stackoverflow.com/questions/20782488/simple-datpicker-for-the-android