-1

同じアクティビティに2つの日付ピッカーがあり、ユーザーが一方の日付を変更すると、もう一方の日付ピッカーの日付が直接変更されるため、それらは互いに接続されています ここにリスナーがあります

  //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();               
            }
        });

1 つの日付ピッカー リスナーが呼び出されたときに、2 番目の日付ピッカーのもう 1 つのリスナーを null にします。私の質問は、null にしたリスナーを再びアクティブにするにはどうすればよいかということです。

4

2 に答える 2

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);
于 2012-11-27T13:46:11.497 に答える
0

クラスレベルでリスナーを作成し、コードで必要なときにいつでもこれを使用してください。癌の答えは正解です。

于 2012-11-27T13:46:53.710 に答える