Android:DatePicker和DatePicker对话框

我在这里的选项菜单上有这个代码

Dialog dialog = new Dialog(ScheduleActivity.this); dialog.setTitle("Add Event"); dialog.setContentView(R.layout.add_even_on); Button datePicker = (Button) dialog.findViewById(R.id.datePicker); final DialogFragment dateFrag = new MyDatePicker(); datePicker.setOnClickListener(new OnClickListener() { public void onClick(View v) { dateFrag.show(getSupportFragmentManager(), "datePicker"); } }); dialog.show(); 

当点击选项菜单中的“添加事件”时,将出现一个对话框,显示一个DatePickerDialogbutton,在它旁边是一个反映DatePickerDialog中所选date的TextView ,这里是我从Android开发者处获得的类如何使用DatePickerDialog。

 class MyDatePicker extends DialogFragment implements DatePickerDialog.OnDateSetListener { int pYear; int pDay; int pMonth; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current date as the default date in the picker final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); // Create a new instance of DatePickerDialog and return it return new DatePickerDialog(getActivity(), this, year, month, day); } public void onDateSet(DatePicker view, int year, int month, int day) { pYear = year; pDay = day; pMonth = month; } } 

所以我的问题是,如何获得在milleseconds中的值,当我点击DatePickerDialog上的“设置”,反过来自动closures它,并返回到我的对话框,其中包含打开DatePickerDialog的button和反映wateverdate的Textview是selectDatePickerDialog …我不会显示一个我select的DatePickerDialog内…

这是我的意思的图片,

所以当我点击selectdatebutton时,出现一个DatePickerDialog框,如下图所示 在这里输入图像说明

在这里输入图像说明

当我点击设置,我想要考虑从该DatePickerDialog的毫秒数值

Solutions Collecting From Web of "Android:DatePicker和DatePicker对话框"

这里我提供一些代码希望它帮助你..

 public class NewReminder extends Activity { private static final int DATE_DIALOG_ID = 1; private int year; private int month; private int day; EditText editTextDate; private String currentDate; private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.addnewreminder); initialize(); context = getApplicationContext(); OnClickListener listenerDate = new OnClickListener() { @Override public void onClick(View arg0) { final Calendar c = Calendar.getInstance(); year = c.get(Calendar.YEAR); month = c.get(Calendar.MONTH); day = c.get(Calendar.DAY_OF_MONTH); showDialog(DATE_DIALOG_ID); } }; editTextDate.setOnClickListener(listenerDate); } private void initialize() { // TODO Auto-generated method stub editTextDate = (EditText) findViewById(R.id.editTextDate); } private void updateDisplay() { currentDate = new StringBuilder().append(day).append(".") .append(month + 1).append(".").append(year).toString(); Log.i("DATE", currentDate); } OnDateSetListener myDateSetListener = new OnDateSetListener() { @Override public void onDateSet(DatePicker datePicker, int i, int j, int k) { year = i; month = j; day = k; updateDisplay(); editTextDate.setText(currentDate); } }; @Override protected Dialog onCreateDialog(int id) { switch (id) { case DATE_DIALOG_ID: return new DatePickerDialog(this, myDateSetListener, year, month, day); } return null; } } 

旧的对话框已被弃用。 实现碎片:

将您的活动迁移到片段活动:

 public class YourActivity extends FragmentActivity 

创build片段对话框:

 public class TimePickerFragment extends DialogFragment { private OnDateSetListener listener; public TimePickerFragment(OnDateSetListener listener) { this.listener=listener; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Use the current time as the default values for the picker final Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH); int day = c.get(Calendar.DAY_OF_MONTH); // Create a new instance of TimePickerDialog and return it return new DatePickerDialog(getActivity(), listener, year,month,day); } } 

实现接口(包:导入android.app.DatePickerDialog.OnDateSetListener):

 public class YourActivity extends FragmentActivity implements OnDateSetListener{ @Override public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) { } } 

添加showDialog函数:

 public class YourActivity extends FragmentActivity implements OnDateSetListener{ showDateDialog(){ FragmentManager fm = getSupportFragmentManager(); TimePickerFragment newFragment = new TimePickerFragment(this); newFragment.show(fm, "date_picker"); } @Override public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) { } } 

在XML中添加一个TextView和一个button

 <TextView android:id="@+id/searchText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TextView" /> <Button android:id="@+id/search" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Search" /> 

在java文件中添加下面的代码

 public class DatePickerDialogExample extends Activity { TextView txtDate; private int mYear, mMonth, mDay, mHour, mMinute; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); txtDate = (TextView) findViewById(R.id.searchText); Button search = (Button) findViewById(R.id.search); search.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Process to get Current Date final Calendar c = Calendar.getInstance(); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); // Launch Date Picker Dialog DatePickerDialog dpd = new DatePickerDialog(PrayTimeActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // Display Selected date in textbox txtDate.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year); } }, mYear, mMonth, mDay); dpd.show(); } }); } } 

你可以试试这个代码..它一定会对你有所帮助。毫无疑问!

  protected Dialog onCreateDialog(int id) { Calendar c=Calendar.getInstance(); int Sysday=c.get(Calendar.DAY_OF_MONTH); int Sysmonth=c.get(Calendar.MONTH); int Sysyear=c.get(Calendar.YEAR); int Sysmin=c.get(Calendar.MINUTE); int Syshour=c.get(Calendar.HOUR); switch (id) { case TIME_DIALOG: return new TimePickerDialog(this, myTimePicker , Syshour, Sysmin, false); case DATE_DIALOG: return new DatePickerDialog(this, myDatePicker, Sysyear, Sysmonth, Sysday); } return null; } 

这是我的帮助函数,它获取上下文和TextView作为参数,并在用户selectdate时在该文本视图上设置Date:

  public static void showDate(final Context context, final TextView textView) { if (textView != null) { final Calendar myCalendar = Calendar.getInstance(); 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); String myFormat = "MM/dd/yy"; // In which you need put here SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US); //UIHelper.showLongToastInCenter(context, sdf.format(myCalendar.getTime())); textView.setText(sdf.format(myCalendar.getTime())); } }; new DatePickerDialog(context, date, myCalendar.get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), myCalendar.get(Calendar.DAY_OF_MONTH)).show(); } else { UIHelper.showLongToastInCenter(context, "Unable to show Date picker"); } } 

试试这个代码是明确的工作:

  final Calendar c = Calendar.getInstance(); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get(Calendar.DAY_OF_MONTH); DatePickerDialog dpd = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { birth_Date.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year); } }, mYear, mMonth, mDay); dpd.show(); 
 Calendar c1 = Calendar.getInstance(); int year = c1.get(Calendar.YEAR); int month = c1.get(Calendar.MONTH); int day = c1.get(Calendar.DAY_OF_MONTH); DatePickerDialog.OnDateSetListener myDateListener = new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) { if(arg0.isShown()){ //do further code here } } }; DatePickerDialog dp = new DatePickerDialog(YourActivity.this, myDateListener, year, month, day); dp.show();