我的布局是DatePicker,我希望当用户更改日期时,此日期会自动显示在Toast中。我用这个OnDateChangedListener.
我的build.gradle
有下一个参数:
compileSdkVersion 22
minSdkVersion 14
targetSdkVersion 22
我还会写下下一个样式:
<item name="android:datePickerStyle">@android:style/Widget.DatePicker</item>
因为我希望DatePicker分3行(日,月,年)和3列(yestarday,今天,明天日期)通过向上滑动来更改日期。
这是我初始化DatePicker后的代码。
datePicker.init(today.get(Calendar.YEAR), today.get(Calendar.MONTH), today.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
Log.d(LOG_TAG, "onDateChanged");
Toast.makeText(getApplicationContext(), "onDateChanged: " + dayOfMonth, Toast.LENGTH_SHORT).show();
}
});
我在Nexus 7(API 22),仿真器Nexus 5(API 21)和5.4 FWVGA API 15上测试了应用程序。 Toast在我开始申请时以及尝试更改日期时都没有显示。为什么?
答案 0 :(得分:0)
使用活动作为上下文而不是getApplicationContext(),虽然两者都是上下文类型,但在某些实现上它可能非常繁琐,因为它不知道toast属于应用程序上下文的位置。
要使用该活动,请使用MyActivity.this
getApplicationContext()
,其中MyActivity是datePicker
所在活动的名称。
另外验证onDateChanged实际上是在日志中(即调用onDateChanged)