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()
中为每个
日期选择器调用