java - onCreate 中的监听器是否工作不止一次?

标签 java android datepicker listener oncreate

我有一个我在 onCreate 中定义的日期选择器的监听器,我想在用户按如下方式更改日期选择器日期后立即工作

已编辑

    public class birthDate extends Activity{


        DatePicker birthDayDatePicker,periodDatePicker;


        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);  
            setContentView(R.layout.birthdate);

            birthDayDatePicker = (DatePicker)findViewById(R.id.DatePickerBirthDay);

              birthDayDatePicker.init(currentYear, currentMonth, currentDay, new OnDateChangedListener () {

                @Override
                public void onDateChanged(DatePicker birthDayDatePicker, int currentYear, int currentMonth, int currentDay) {
                    // TODO Auto-generated method stub

                    periodDateCalculations();

                    }
            });

        }

public void periodDateCalculations ()
    {
        Calendar start = Calendar.getInstance();

        // get the chosen date from birth date picker
        int birthYear = birthDayDatePicker.getYear();
        int birthMonth = birthDayDatePicker.getMonth();
        int birthDay = birthDayDatePicker.getDayOfMonth();

        //set the chosen date to calendar instance
        start.set(birthYear, birthMonth, birthDay);

        //get the date 
        Date birthDate = start.getTime();
        //int constrain = currentMonth + 9;

        int daysToAdd = -280;

        //another instance from calendar 
        Calendar cal2 = Calendar.getInstance();

        //set birth date chosen to calendar
        cal2.setTime(birthDate);

//      if (cal.getTime().getMonth() >= constrain)
//      {System.out.println("cal.getTime().getMonth() >= constrain");}

        //add -280 day to birth day to get period date
        cal2.add(Calendar.DAY_OF_MONTH,daysToAdd);
        System.err.println("-----" +cal2.getTime());
        int periodYearAfterCalc = cal2.getTime().getYear()+1900;
        System.err.println("-----" + periodYearAfterCalc);
        int periodMonthAfterCalc = cal2.getTime().getMonth();
        System.err.println("----" + periodMonthAfterCalc);
        int periodDayAfterCalc = cal2.getTime().getDate();
        System.err.println(periodDayAfterCalc);

        birthDayDatePicker.setDescendantFocusability(DatePicker.FOCUS_BLOCK_DESCENDANTS);
        periodDatePicker.setDescendantFocusability(DatePicker.FOCUS_BLOCK_DESCENDANTS);

        //edit birth date picker from user  
            if(birthDay >= currentDay && birthMonth >= currentMonth && birthYear >= currentYear){
                //the program runs normally
                periodDatePicker.updateDate(periodYearAfterCalc, periodMonthAfterCalc, periodDayAfterCalc);     

                }
                else{
                                new AlertDialog.Builder(birthDate.this)

                                .setTitle("Wrong Data Input!")

                                .setMessage("birth day input error")

                                .setNeutralButton("Ok",

                                new DialogInterface.OnClickListener() {

                                public void onClick(DialogInterface dialog,

                                int which) {


                                }

                                }).show();

                          periodDatePicker.updateDate(currentYear, currentMonth, currentDay);   

                            }

        }

我的问题是,这个监听器是否按照其在 onCreate 中定义的那样工作不止一次,或者我应该在其他地方定义它多次使用它??

提前致谢

最佳答案

它在 onCreate() 中定义的事实无关紧要。您正在使用给定的监听器初始化日期选择器,因此日期选择器将在每次日期更改时调用此监听器。

关于java - onCreate 中的监听器是否工作不止一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13549452/

相关文章:

java - CraftingManager 错误

java - 为什么方法的返回类型不包含在方法签名中?

java - 输出未知宽度的金字塔

Android Activity 生命周期 : state order when new activity starts

jquery - 使用 jQuery UI 日期选择器在新行中显示上一个和下一个按钮

java - JAXB 编码和继承

android - android中Videoview的身份验证

android - Flutter项目中 "flutter.minSdkVersion"的值在哪里初始化?

jQueryUI datepicker 小部件在小部件初始化后添加 'onClose' 函数

c# - 如何使用 DatePicker 和 TextBox 将数据添加到 ObservableCollection