2016-03-23 19 views
3

私はadroidアプリケーションでCalendarViewの断片を作成しようとしています。私が日付を変えたら、トーストは印刷されるはずですが、それはしません。私は、ユーザーが日付を変更した場合、トーストを印刷します。誰かが私のコードのバグを見つけることができますか? ありがとうございました!CalendarViewのsetOnDateChangeListenerが機能しません

public class CalendarFragment extends Fragment { 

public CalendarFragment() { 
    // Required empty public constructor 
} 

CalendarView cal; 
Long date; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment_calendar, container, false); 

    cal = (CalendarView) v.findViewById(R.id.calendarView); 
    date = cal.getDate(); 

    cal.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { 
     @Override 
     public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { 
      if(cal.getDate() != date) { 
       date = cal.getDate(); 
       Toast.makeText(view.getContext(), "Year=" + year + " Month=" + month + " Day=" + dayOfMonth, Toast.LENGTH_LONG).show(); 
       //cal.setBackgroundColor(Color.RED); 
      } 
     } 
    }); 

    // Inflate the layout for this fragment 
    return inflater.inflate(R.layout.fragment_calendar, container, false); 
} 

} 

答えて

1

すでにonCreateView()でビューを拡張しました。しかし、あなたは2回それをやっています。あなたのonCreateView()

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment_calendar, container, false); 

    cal = (CalendarView) v.findViewById(R.id.calendarView); 
    date = cal.getDate(); 

    cal.setOnDateChangeListener(new CalendarView.OnDateChangeListener() { 
     @Override 
     public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { 
      if(cal.getDate() != date) { 
       date = cal.getDate(); 
       Toast.makeText(view.getContext(), "Year=" + year + " Month=" + month + " Day=" + dayOfMonth, Toast.LENGTH_LONG).show(); 
       //cal.setBackgroundColor(Color.RED); 
      } 
     } 
    }); 

    // Inflate the layout for this fragment 
    return v; 
} 

によって変更 それが役に立てば幸い!

+0

これは正しいです。私はちょうど質問を見渡していて、あなたが答えたときにようやく問題を見つけました。 GG – Brandacus

関連する問題