【问题标题】:Does the listener inside onCreate works more than once?onCreate 中的侦听器是否多次工作?
【发布时间】:2012-11-25 08:27:52
【问题描述】:

我有一个我在 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 中的定义不止一次工作,或者我应该在其他地方定义它以便不止一次使用它??

提前致谢

【问题讨论】:

    标签: java android datepicker listener oncreate


    【解决方案1】:

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

    【讨论】:

    • 是的,它应该在每次日期更改时调用监听器,但这不是正在发生的事情,监听器只工作一次,我不知道为什么
    • 您提供的代码不足以知道为什么会发生这种情况。
    • 您正在将日期选择器的侦听器在第一次调用时重置为 null:birthDayDatePicker.init(resYear2, resMonth2, resDay2, null);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-13
    相关资源
    最近更新 更多