【问题标题】:Android: Date pickers listeners from null to activeAndroid:日期选择器侦听器从 null 到 active
【发布时间】:2012-11-27 13:35:17
【问题描述】:

我在同一个活动中有两个日期选择器并且它们相互连接,因为当用户更改一个日期时,另一个日期选择器日期直接更改 这里是听众

  //initialize period date picker with current date and on date change listener 
        periodDatePicker.init(currentYear, currentMonth, currentDay, new OnDateChangedListener()
        {
            @Override
            public void onDateChanged(DatePicker periodDatePicker, int currentYear, int currentMonth,int currentDay) {
                // TODO Auto-generated method stub
                Number = 1;
            birthDayDatePicker.init(currentYear, currentMonth, currentDay, null);
                birthDateCalculations();

            }
        });

        //initialize birth date picker with current date and on date change listener 
        birthDayDatePicker.init(currentYear, currentMonth, currentDay, new OnDateChangedListener () {

            @Override
            public void onDateChanged(DatePicker birthDayDatePicker, int currentYear, int currentMonth, int currentDay) {
                // TODO Auto-generated method stub
                Number = 2;
                periodDatePicker.init(currentYear, currentMonth, currentDay, null);
                periodDateCalculations();               
            }
        });

当调用一个日期选择器侦听器时,我将另一个侦听器转到第二个日期选择器为 null ,我的问题是,如何使我转为 null 的侦听器再次处于活动状态

【问题讨论】:

    标签: java android eclipse datepicker listener


    【解决方案1】:

    编辑
    如果您为侦听器分配变量,则可以重用它们。此外,您似乎有变量名冲突。当OnDateChangedListener 被调用时,有一个currentYear/currentMonth/currentDay 函数参数和类成员变量:

    OnDateChangedListener periodListener = null;
    OnDateChangedListener birthdayListener  = null;
    
    periodListener = new OnDateChangedListener() {
             @Override
             public void onDateChanged(DatePicker periodDatePicker, int newYear, int newMonth, int newDay) {
                  Number = 1;
                  birthDayDatePicker.init(currentYear, currentMonth, currentDay, null);
                  birthDateCalculations();
                  birthDayDatePicker.init(currentYear, currentMonth, currentDay, birthdayListener);
             }
    
    
    birthdayListener = new OnDateChangedListener () {    
             @Override
             public void onDateChanged(DatePicker birthDayDatePicker, int newYear, int newMonth, int newDay) {
                  Number = 2;
                  periodDatePicker.init(currentYear, currentMonth, currentDay, null);
                  periodDateCalculations();               
                  periodDatePicker.init(currentYear, currentMonth, currentDay, periodListener);
             }
        });
    
    
    birthDayDatePicker.init(currentYear, currentMonth, currentDay, birthdayListener);
    periodDatePicker.init(currentYear, currentMonth, currentDay, periodListener);
    

    【讨论】:

    • 我将另一个设置为 null 因为我不想让两者具有相同的日期,我对日期选择器进行了一些特殊计算,我将其侦听器设置为 null
    【解决方案2】:

    在类级别创建侦听器,并在需要时在代码中使用它。 癌症的答案是正确的。

    【讨论】:

      猜你喜欢
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-05
      • 1970-01-01
      相关资源
      最近更新 更多