我的布局中有 DatePicker,我希望当用户更改日期时该日期自动显示在 Toast 中。我用了这个OnDateChangedListener。
我的 build.gradle
有下一个参数:
compileSdkVersion 22
minSdkVersion 14
targetSdkVersion 22
还有我接下来写的样式:
<item name="android:datePickerStyle">@android:style/Widget.DatePicker</item>
因为我想要 3 行(日、月、年)和 3 列(昨天、今天、明天日期)的 DatePicker 通过上下滑动来更改日期。
这是我初始化 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 不显示。为什么?
最佳答案
使用 Activity 作为上下文而不是 getApplicationContext(),尽管两者都是上下文类型,但在某些实现上可能会非常繁琐,因为它不知道 toast 属于应用程序上下文的位置。
要使用该 Activity ,请使用 MyActivity.this
(其中有 getApplicationContext()
),其中 MyActivity 是 datePicker
所在 Activity 的名称。
还要验证 onDateChanged 实际上在日志中(即 onDateChanged 被调用)
关于java - Android:DatePicker - 跟踪更改日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31805962/