Java 所有活动的日期
您好,我在三个以上的类中使用日期选择器进行相同的验证。相反,我必须在一个类中编写,并在需要时在其他类中调用该函数,是否可以在下面的日期选择器代码中调用该函数Java 所有活动的日期,java,android,android-datepicker,Java,Android,Android Datepicker,您好,我在三个以上的类中使用日期选择器进行相同的验证。相反,我必须在一个类中编写,并在需要时在其他类中调用该函数,是否可以在下面的日期选择器代码中调用该函数 public class MainActivity extends Activity { private TextView tvDisplayDate; private Button btnChangeDate; private int myear; private int mmonth;
public class MainActivity extends Activity {
private TextView tvDisplayDate;
private Button btnChangeDate;
private int myear;
private int mmonth;
private int mday;
static final int DATE_DIALOG_ID = 999;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setCurrentDateOnView();
addListenerOnButton();
}
// display current date
public void setCurrentDateOnView() {
tvDisplayDate = (TextView) findViewById(R.id.tvDate);
final Calendar c = Calendar.getInstance();
myear = c.get(Calendar.YEAR);
mmonth = c.get(Calendar.MONTH);
mday = c.get(Calendar.DAY_OF_MONTH);
// set current date into textview
tvDisplayDate.setText(new StringBuilder()
// Month is 0 based, just add 1
.append(mmonth + 1).append("-").append(mday).append("-")
.append(myear).append(" "));
}
public void addListenerOnButton() {
btnChangeDate = (Button) findViewById(R.id.btnChangeDate);
btnChangeDate.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDialog(DATE_DIALOG_ID);
}
});
}
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DATE_DIALOG_ID:
// set date picker as current date
DatePickerDialog _date = new DatePickerDialog(this, datePickerListener, myear,mmonth,
mday)
{
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth)
{
if (year < myear)
view.updateDate(myear, mmonth, mday);
if (monthOfYear < mmonth && year == myear)
view.updateDate(myear, mmonth, mday);
if (dayOfMonth < mday && year == myear && monthOfYear == mmonth)
view.updateDate(myear, mmonth, mday);
}
};
return _date;
}
return null;
}
private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {
// when dialog box is closed, below method will be called.
public void onDateSet(DatePicker view, int selectedYear,
int selectedMonth, int selectedDay) {
myear = selectedYear;
mmonth = selectedMonth;
mday = selectedDay;
// set selected date into textview
tvDisplayDate.setText(new StringBuilder().append(mmonth + 1)
.append("-").append(mday).append("-").append(myear)
.append(" "));
Date dateObject1 = new Date(myear - 1900, mmonth, mday);
Date dateObj2 = new Date(System.currentTimeMillis());
if(dateObject1.before(dateObj2) || dateObject1.equals(dateObj2)){
//the program runs normally
}
else{
new AlertDialog.Builder(MainActivity.this)
.setTitle("Wrong Data Input!")
.setMessage("The end Date must be Before the start Date, please insert new Date values")
.setNeutralButton("Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
}
}).show();
}
}
};
}
公共类MainActivity扩展活动{
私有文本视图tvDisplayDate;
私人按钮btnChangeDate;
私人髓鞘内;
私人住宅;
私人国际日;
静态最终整数日期对话框ID=999;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setCurrentDateOnView();
addListenerOnButton();
}
//显示当前日期
public void setCurrentDateOnView(){
tvDisplayDate=(TextView)findViewById(R.id.tvDate);
最终日历c=Calendar.getInstance();
myear=c.get(日历年);
mmonth=c.get(日历月);
mday=c.get(日历,月的第天);
//将当前日期设置为文本视图
tvDisplayDate.setText(新的StringBuilder()
//月份以0为基础,只需添加1
.append(mm+1).append(“-”).append(mday).append(“-”)
.append(myear)。append(“”);
}
public void addListenerOnButton(){
btnChangeDate=(按钮)findViewById(R.id.btnChangeDate);
btnChangeDate.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
showDialog(日期对话框ID);
}
});
}
@凌驾
受保护的对话框onCreateDialog(int id){
开关(id){
案例日期\u对话框\u ID:
//将日期选择器设置为当前日期
DatePickerDialog\u date=新的DatePickerDialog(此,datePickerListener,myear,Amnoth,
(星期日)
{
@凌驾
公共无效onDateChanged(日期选择器视图,整数年,整数月,整数月)
{
如果(年<年)
view.updateDate(myear,mmonth,mday);
如果(月日<月日<年==myear)
view.updateDate(myear,mmonth,mday);
如果(月日<日和年==月日和月日==月日)
view.updateDate(myear,mmonth,mday);
}
};
返回日期;
}
返回null;
}
私有DatePickerDialog.OnDateSetListener datePickerListener=new DatePickerDialog.OnDateSetListener(){
//当对话框关闭时,将调用下面的方法。
public void onDateSet(日期选择器视图,int selectedYear,
int selectedMonth,int selectedDay){
myear=所选年份;
mmonth=所选的月份;
mday=所选日期;
//将所选日期设置为文本视图
tvDisplayDate.setText(新的StringBuilder().append(mmonth+1)
.append(“-”).append(mday).append(“-”).append(myear)
.附加(“”);
Date dateObject1=新日期(myear-1900,月日,月日);
Date dateObj2=新日期(System.currentTimeMillis());
if(dateObject1.before(dateObj2)| | dateObject1.equals(dateObj2)){
//程序运行正常
}
否则{
新建AlertDialog.Builder(MainActivity.this)
.setTitle(“错误的数据输入!”)
.setMessage(“结束日期必须早于开始日期,请插入新的日期值”)
.setNeutralButton(“确定”,
新建DialogInterface.OnClickListener(){
公共void onClick(对话框接口对话框,
int(其中){
}
}).show();
}
}
};
}
您可以有一个带有静态方法的DateUtils
类,该类接受日期和上下文。此方法可以执行日期验证,并相应地构建AlertDialog
。您可以这样调用这个静态方法
DateUtils.dateValidator(Date, Context);
这可以在OnDateSetListener
的onDateSet()
中为每个日期选择器调用