【问题标题】:Android: DatePicker - Track change dateAndroid:DatePicker - 跟踪更改日期
【发布时间】:2015-08-04 09:48:13
【问题描述】:

我的布局中有 DatePicker,我希望当用户更改日期时,此日期会自动显示在 Toast 中。我用这个OnDateChangedListener.
我的build.gradle 有下一个参数:

compileSdkVersion 22
minSdkVersion 14
targetSdkVersion 22

还有我接下来写的样式:

<item name="android:datePickerStyle">@android:style/Widget.DatePicker</item>

因为我希望 DatePicker 在 3 行(日、月、年)和 3 列(昨天、今天、明天日期)中通过上下滑动来更改日期。

这是我初始化 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 不显示。为什么?

【问题讨论】:

  • 一切看起来都很好,尝试清理项目或构建它。 today 这里是什么?
  • 调试中,Toast 行是否在对话框关闭时运行?
  • @UmaKanth 我这样做了,但没有帮助((
  • @CptEric 我不使用 DatePicker 的对话框,它在我的活动布局中

标签: java android date datepicker


【解决方案1】:

使用 Activity 作为上下文而不是 getApplicationContext(),尽管两者都是上下文类型,但在某些实现中可能会非常繁琐,因为它不知道 toast 属于应用程序上下文的哪个位置。

要使用该活动,请使用MyActivity.this,其中有getApplicationContext(),MyActivity 是datePicker 所在活动的名称。

还要验证 onDateChanged 是否确实在日志中(即 onDateChanged 被调用)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    相关资源
    最近更新 更多