package cn.alphabets.light.ui; import android.content.Intent; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.DatePicker; import android.widget.TimePicker; import java.util.Calendar; import cn.alphabets.light.R; import cn.alphabets.light.application.ABSwipeBackActivity; import cn.alphabets.light.util.DateTimeUtil; public class DateTimeActivity extends ABSwipeBackActivity { public static final String VALUE = "value"; public static final String TITLE = "title"; public static final String DEFAULT = "defaults"; public static final String READONLY = "readonly"; public static final String THEME = "theme"; public static final String DATE_ONLY = "date_only"; public static final String FORMAT = "format"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设定Theme,需要在setContentView之前调用 Bundle extras = getIntent().getExtras(); if (extras != null) { int resourceId = extras.getInt(THEME, 0); if (resourceId != 0) { setTheme(resourceId); } } Helper.setNoIconBackActionBar(this, "Edit"); setContentView(R.layout.activity_datetime); if (extras != null) { String title = extras.getString(TITLE); setTitle(title); boolean isDateOnly = extras.getBoolean(DATE_ONLY); String defaults = extras.getString(DEFAULT); String format = extras.getString(FORMAT); Calendar calendar = Calendar.getInstance(); DatePicker datePicker = (DatePicker) findViewById(R.id.date_picker); if (defaults != null && !"".equals(defaults)) { if (format != null && !"".equals(format)) { calendar.setTime(DateTimeUtil.parse(defaults, format)); } else { calendar.setTime(DateTimeUtil.parse(defaults, isDateOnly)); } datePicker.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), null); } // 判断是否需要显示小时分钟 if (!isDateOnly) { TimePicker timePicker = (TimePicker) findViewById(R.id.time_picker); timePicker.setVisibility(View.VISIBLE); if (defaults != null && !"".equals(defaults)) { timePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY)); timePicker.setCurrentMinute(calendar.get(Calendar.MINUTE)); } } } } @Override public boolean onCreateOptionsMenu(Menu menu) { boolean isReadOnly = getIntent().getExtras().getBoolean(READONLY); if (!isReadOnly) { MenuItem item = menu.add(Menu.NONE, android.R.id.edit, 1, "Save"); item.setIcon(R.drawable.tool_diskette_white); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); } return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); // 返回 if (id == android.R.id.home) { onBackPressed(); return true; } // 保存 if (id == android.R.id.edit) { Calendar calendar = Calendar.getInstance(); DatePicker datePicker = (DatePicker) findViewById(R.id.date_picker); boolean isDateOnly = getIntent().getExtras().getBoolean(DATE_ONLY); if (!isDateOnly) { TimePicker timePicker = (TimePicker) findViewById(R.id.time_picker); calendar.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), timePicker.getCurrentHour(), timePicker.getCurrentMinute()); } else { calendar.set(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth()); } String dateStr = ""; String format = getIntent().getExtras().getString(FORMAT); if (format != null && !"".equals(format)) { dateStr = DateTimeUtil.format(calendar.getTime(), format); } else { dateStr = DateTimeUtil.format(calendar.getTime(), isDateOnly); } Intent data = new Intent(); data.putExtra(VALUE, dateStr); setResult(RESULT_OK, data); onBackPressed(); return true; } return super.onOptionsItemSelected(item); } }