Android CalendarView的setMinDate
我正在尝试以编程方式为CalendarView小部件设置最短日期,如下所示:Android CalendarView的setMinDate,android,calendarview,Android,Calendarview,我正在尝试以编程方式为CalendarView小部件设置最短日期,如下所示: setContentView(R.layout.dialog_date_select); CalendarView calendar = (CalendarView) findViewById(R.id.calendarView1); calendar.setMinDate(System.currentTimeMillis() - 1000); 但由于某种原因,我得到了以下错误 11-05 12:50:14.054:
setContentView(R.layout.dialog_date_select);
CalendarView calendar = (CalendarView) findViewById(R.id.calendarView1);
calendar.setMinDate(System.currentTimeMillis() - 1000);
但由于某种原因,我得到了以下错误
11-05 12:50:14.054: E/AndroidRuntime(798): FATAL EXCEPTION: main
11-05 12:50:14.054: E/AndroidRuntime(798): java.lang.RuntimeException: Unable to start
activity ComponentInfo{com.patientsnow/com.patientsnow.activity.DateSelectActivity}:
java.lang.NullPointerException
11-05 12:50:14.054: E/AndroidRuntime(798): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
11-05 12:50:14.054: E/AndroidRuntime(798): at
android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
11-05 12:50:14.054: E/AndroidRuntime(798): at
android.app.ActivityThread.access$600(ActivityThread.java:141)
11-05 12:50:14.054: E/AndroidRuntime(798): at
android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
11-05 12:50:14.054: E/AndroidRuntime(798): at
android.os.Handler.dispatchMessage(Handler.java:99)
11-05 12:50:14.054: E/AndroidRuntime(798): at android.os.Looper.loop(Looper.java:137)
11-05 12:50:14.054: E/AndroidRuntime(798): at
android.app.ActivityThread.main(ActivityThread.java:5103)
11-05 12:50:14.054: E/AndroidRuntime(798): at
java.lang.reflect.Method.invokeNative(Native Method)
11-05 12:50:14.054: E/AndroidRuntime(798): at
java.lang.reflect.Method.invoke(Method.java:525)
11-05 12:50:14.054: E/AndroidRuntime(798): at
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
11-05 12:50:14.054: E/AndroidRuntime(798): at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-05 12:50:14.054: E/AndroidRuntime(798): at dalvik.system.NativeStart.main(Native
Method)
11-05 12:50:14.054: E/AndroidRuntime(798): Caused by: java.lang.NullPointerException
11-05 12:50:14.054: E/AndroidRuntime(798): at
com.patientsnow.activity.DateSelectActivity.onCreate(DateSelectActivity.java:36)
11-05 12:50:14.054: E/AndroidRuntime(798): at
android.app.Activity.performCreate(Activity.java:5133)
11-05 12:50:14.054: E/AndroidRuntime(798): at
android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
11-05 12:50:14.054: E/AndroidRuntime(798): at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
11-05 12:50:14.054: E/AndroidRuntime(798): ... 11 more
DateSelectActivity的第36行是我尝试设置的地方。为什么该代码没有设置最小日期?请注意,如果我尝试在XML中设置最小日期和最大日期,那么它就会起作用。在访问
calendarView1
之前,请确保您正在调用setContentView
。我编辑了这个问题。显然,findviewbyd(R.id.calendarView1)代码>返回null
。这可能是因为R.id.calendarView1
不是布局文件中显示的CalendarView
的id,或者您试图从错误的视图层次结构中膨胀。谢谢MH,这确实是问题所在。
Time myTimeMin = new Time();
myTimeMin.set(19, 11-1, 2014);
myCalendarView.setDate(myTimeMin.toMillis(true));
myCalendarView.setMinDate(myCalendarView.getDate());
Time myTimeMax = new Time();
//myTimeMax.set(10, 12-1, 2014);
myTimeMax.setToNow();
myCalendarView.setDate(myTimeMax.toMillis(true));
myCalendarView.setMaxDate(myCalendarView.getDate());