选择取消按钮时如何重置 DatePicker

2023-12-24

我的应用程序中有一个 datePicker 对话框。当我选择日期时效果很好。但是,如果在对话框中更改日期然后按取消,原始编辑文本将保持不变,但日期选择器仍然具有取消之前的日期。我想确保每次进入日期选择器时,它都会设置 EditText 中的日期。我的代码如下。

onCreate() 方法

//  Date Listener
    fdEtDate.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            showDialog(DATE_DIALOG_ID);
            return false;
        }
    });

再往下活动

@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DATE_DIALOG_ID:
        return new DatePickerDialog(this,
                    dateSetListener,
                    cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE));
    case STD_DIALOG_ID:
        return new TimePickerDialog(this,
                    stdSetListener,
                    stdHH, stdMM,
                    true);
    case STA_DIALOG_ID:
        return new TimePickerDialog(this,
                    staSetListener,
                    staHH, staMM,
                    true);
    }
    return null;
}

// the callback received when the user "sets" the date in the dialog
private DatePickerDialog.OnDateSetListener dateSetListener =
    new DatePickerDialog.OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, 
                              int monthOfYear, int dayOfMonth) {
            cal.set(Calendar.YEAR, year);
            cal.set(Calendar.MONTH, monthOfYear);
            cal.set(Calendar.DATE, dayOfMonth);
            updateDisplay();
        }
};
// updates the date in the TextView
private void updateDisplay() {
    fdEtDate.setText(
        new StringBuilder()
                .append(Utils.pad(cal.get(Calendar.DATE))).append(Const.SQL_DATE_SEP)
                .append(Utils.pad(cal.get(Calendar.MONTH)+1)).append(Const.SQL_DATE_SEP)
                .append(cal.get(Calendar.YEAR)));

    fdEtStd.setText(
        new StringBuilder()
                .append(Utils.pad(stdHH)).append(Const.SQL_TIME_SEP)
                .append(Utils.pad(stdMM)));

    fdEtSta.setText(
        new StringBuilder()
                .append(Utils.pad(staHH)).append(Const.SQL_TIME_SEP)
                .append(Utils.pad(staMM)));
}

似乎每次都会创建一个新的对话框,那么为什么每次不使用 fdEtDate (EditText) 中的日期进行初始化

提前致谢


你应该使用准备对话框每次显示对话框时设置初始日期。

@Override
protected void onPrepareDialog(int id, Dialog dialog) {
    switch (id) {
    case START_DATE_DIALOG_ID:
        ((DatePickerDialog) dialog).updateDate(
            mCalendar.get(Calendar.YEAR),
            mCalendar.get(Calendar.MONTH),
            mCalendar.get(Calendar.DAY_OF_MONTH))
    }
}

对话框仅在第一次显示时创建,从那时起它就会被重用,除非您使用removeDialog()显式销毁它。

如果您使用 onCreateDialog(int) 来管理对话框的状态(如上一节所述),则每次关闭对话框时,Activity 都会保留 Dialog 对象的状态。如果您决定不再需要该对象或者清除状态很重要,那么您应该调用removeDialog(int)。这将删除对该对象的任何内部引用,如果显示对话框,它将关闭它

http://developer.android.com/guide/topics/ui/dialogs.html http://developer.android.com/guide/topics/ui/dialogs.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选择取消按钮时如何重置 DatePicker 的相关文章

  • 使用arm-linux-gnueabi-gcc为Android交叉编译静态C hello world

    我想使用 arm linux gnueabi gcc 从 C 构建静态 hello world 而不是使用 NDK 独立工具链或 Codesourcery 在Ubuntu中 我做了以下事情 sudo apt get install gcc
  • 如何在 Android 中获取像素颜色

    我正在使用 Intent 调用并显示图库中的图像 现在我可以使用以下命令在 TextView 中获取图像的坐标 final TextView textView TextView findViewById R id textView fina
  • 返回重复假期活动的日历

    我发现 当有两个帐户链接到他们的设备 并且两个帐户都同步其日历 并且两个帐户都设置为显示 Google 假日日历时 CalendarContract Instances 将每个假日返回两次 每个帐户返回一次日历 因此 在这种情况下 您会看到
  • 进入沉浸式全屏模式时状态栏为白色

    我根据以下内容做了一个关于沉浸式全屏模式的简单项目使用沉浸式全屏模式 https developer android com training system ui immersive html But first of all it per
  • AWS Device Farm 应用程序未列出任何设备

    我尝试使用 AWS Device Farm 在我的 AWS WorkSpace 中手动测试和调试来自 Android Studio 的应用程序 我下载了 Device Farm 应用程序 并按照所有说明进行操作 但当我尝试创建新的远程调试会
  • 为什么layout_width =“wrap_content”会占据屏幕的整个宽度?

    使用这个 xml
  • 切换大小写错误。用于 Mac 上 Android 开发的 Eclipse IDE:将工作区合规性更改为 JRE 1.7

    当尝试在 android 项目中使用带有 switch string 的 Switch Case 时 我在 eclipse IDE 中收到错误消息 将工作区合规性更改为 JRE1 7 对于低于 1 7 的源级别 无法打开字符串类型的值 仅允
  • Android Studio 3.1.3不显示布局设计预览

    自从我上次在 android studio 中创建一个新项目以来已经有一段时间了 今天当我这样做时 android studio 没有从布局预览中显示任何内容 它是一个空白窗口 并显示 没有可显示的内容 我已经尝试过了 更新了sdks工具
  • Android ViewPager + 带有动态 ListView 的 Fragments

    在我的应用程序中 我有带有选项卡的活动 假设有 10 个选项卡 每个标签页包含Fragment with ListView 此 ListView 中显示的数据是从我的服务器动态加载的 我用ViewPager显示这些页面 我不想保留所有Fra
  • Google 分析“获取配置文件”不允许我选择我的帐户

    我已经根据最新的 v4 文档完成了一个有效的谷歌分析集成 我们需要去哪里获取配置文件 from 但面临以下问题 我的谷歌分析帐户上的两个不同的应用程序有两个不同的跟踪ID 对于第一个应用程序 我得到了谷歌服务 json我将文件放置在根目录中
  • 创建像 facebook android 一样的登录动画

    我想创建一个登录页面 如 facebook android 应用程序 其中包含用户名和密码EditText字段被隐藏 页面上会显示一个徽标 该徽标会在上方动画一定距离并停留在新位置 然后显示编辑字段 这是我尝试过的 但这里的徽标从页面底部开
  • 将 match_parent 转换为“0dp”

    当我使用android layout height match parent or android layout width match parent 作为约束布局中子项的高度 宽度并构建 Gradle 文件 它会自动更改为android
  • 制作教程(教练标记)叠加层。需要帮助根据另一个视图的位置移动视图

    你好 我正在尝试在教程上做一个教练标记 主程序 java public class Main extends Activity private Button button1 private int x Override public voi
  • 如何判断Android设备是否有触摸屏?

    我花了相当多的时间让我的 UI 仅支持键盘输入 但最终我不确定我是否可以相信 Android 设备都有触摸屏的假设 有没有办法判断Android设备是否有触摸屏 您应该研究现有设备并阅读Android 兼容性定义文档 http source
  • Android Ant项目参考

    我有一个 Android 项目 它有一个 Java 项目文件夹引用 我是用eclipse开发的 现在我想用Ant编译 我想在 build xml 中添加内容以包含引用 假设您的项目名为 HelloListview 比如说 并且您希望所有 A
  • 滑动抽屉上的按钮? - 安卓

    好吧 我已经在我正在构建的 Android 应用程序中的滑动抽屉上实现了一个按钮 唯一的问题是 当我按下按钮时 整个滑动抽屉都会被按下并向上滑动 我知道我可以在 XML 中禁用 按向上滑动 但这似乎不起作用 因为滑动抽屉仍然在没有向上滑动的
  • 连续按钮的自定义 arrayadapter 和 onclicklistener

    我有一个自定义数组适配器 我想为每一行中的按钮添加一个 onclicklistener 当我单击按钮时 我希望图像资源发生变化 一切正常 除了当我单击按钮时图像发生变化但另一行中的另一个按钮的图像也会发生变化 感谢您的帮助 这是我的代码 p
  • 如何获取任何已安装 Android 应用程序的清单权限

    是否可以获得任何已安装的 Android 应用程序的清单权限 感谢您的提示 让它运行 final Intent mainIntent new Intent Intent ACTION MAIN null mainIntent addCate
  • 找不到 com.android.tools.build:gradle:3.0.0 [重复]

    这个问题在这里已经有答案了 当我尝试从命令行构建可能的 Android 项目时 我收到以下错误消息 配置项目 mylib 时出现问题 无法解析配置 mylib classpath 的所有文件 找不到 com android tools bu
  • Firebase 令牌未生成

    我得到的令牌未生成 onTokenrefresh 没有调用 谁能帮忙 它已连接到 firebase 但令牌仍然没有生成 public class MyFireBaseInstanceId extends FirebaseInstanceId

随机推荐

  • ionic cordova 中的 Socket.io

    最初我在我的 ionic 项目中使用了 btford socket io 库 但我在使用它时遇到了麻烦 现在我尝试将 socket io 直接安装到 ionic 项目中 但是我不确定它是否应该安装为 npm install 并将其存储在 n
  • 如何获取HSV和LAB色彩空间?

    我正在使用 OpenCV 和 Python 我的代码是 img hsv cv2 cvtColor image cv CV BGR2HSV img lab cv2 cvtColor image cv CV BGR2Lab 当我访问像素值时 我
  • 这个随机函数有什么问题?

    我给它 0 和 400 有时它返回的值高于 400 这没有意义 float randomValueBetween float low andValue float high return float arc4random RAND MAX
  • Laravel SelectRaw 与 DB:Raw

    First DB table someTable gt selectRaw count min some field as someMin max another field as someMax gt get Second DB tabl
  • 在 matplotlib 中绘制不同的颜色[重复]

    这个问题在这里已经有答案了 假设我有一个 for 循环 并且我想用不同的颜色绘制点 for i in range 5 plt plot x y col i 如何在for循环中自动改变颜色 tcaswell 已经回答了 但我正在输入我的答案
  • Swagger 'swagger.json' 加载,但在 AspNet 项目中的 swagger UI '{localhost}/swagger' 上出现 404 错误

    致力于使用 AspNetCore 为 IIS 托管的 Web 应用程序设置 swagger json 页面加载并且似乎接触了所有 API 都很好 但是当导航到 localhost swagger 查看 UI 页面时 我收到 404 错误 我
  • 使用 VBScript 的批量 ECHO 命令相当于什么?

    我们目前使用 Windows Batch DOS 命令文件来控制我们的流程 要将消息显示到控制台 我们将使用 ECHO 命令 这些消息将显示在我们的调度程序软件中 该软件以前是 Tivoli 现在是 CA WA Workstation ES
  • 将视频转换为 html5 兼容格式(服务器端)

    我想创建一个网站 播放用户上传的html5视频视频 如何将服务器端的任何视频类型转换为 WebM OGG 或 MP4 FFmpeg 是最好的解决方案吗 到目前为止 这就是我的想法 但我宁愿找到一种更简单的方法 是的 ffmpeg 是最好的解
  • MFC DYNAMIC_DOWNCAST 与dynamic_cast

    有什么区别DYNAMIC DOWNCAST来自 MFC 库和标准 C dynamic cast操作员 我可以使用安全吗dynamic cast代替DYNAMIC DOWNCAST对于 MFC 对象 当我的课程包含DECLARE DYNAMI
  • 有没有办法查看多个线程的完整堆栈跟踪?

    C 多线程编程中 when方法A 调用方法B 在一个新线程中 例如通过使用这样的东西 Task A I want B to run in parallel without A waiting for it Task Factory Star
  • 在Spark中计算RDD中的记录是昂贵的任务吗?

    在 Hadoop 中 当我使用输入格式读取器时 作业级别的日志会报告读取了多少条记录 它还显示字节数等 在 Spark 中 当我使用相同的输入格式读取器时 我得不到这些指标 所以我想我会使用inputformat reader来填充rdd
  • TinyMCE:如果 URL 不存在,如何在 URL 前面添加“http://”

    如果在 TinyMCE 中使用插入链接添加 URL 时不存在 是否可以在 URL 前面添加 http 为此 您需要复制tinymce插入链接插件 重命名它 向其中添加必要的代码 http 添加 并将其用作您自己的插件 EDIT 好的 这是一
  • 由于消息发送到已释放的实例而导致加载 UITableView 崩溃

    我的测试应用程序加载 UITableView 并导致崩溃 1421 12503 NSArrayM class message sent to deallocated instance 0x10ae83e0 崩溃时进程停止在 main 方法处
  • Eclipse 中的 UI 设计器无法预览自定义视图

    背景 我一直在创建许多类型的自定义视图 通常我会在 ADT 的 UI 设计器上很好地显示它们的预览 最近 更新到最新版本的 ADT 22 0 5 v201307292155 757759 后 我看不到任何类型的自定义视图 甚至是最简单的视图
  • 使用 Google Apps 脚本从 Google 云端硬盘托管 Google 网站中的图像的替代方案是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 之前很简单 只需要使用URL即可https googledrive com host https go
  • Cocos2d iPhone非矩形精灵触摸检测

    有一个在精灵中包含三角形图形的项目 我将这些精灵排列在网格中 以便它们的矩形全部重叠 当精灵被触摸时 它们的 z 顺序 由我 被更改 以将它们放在 zOrder 的顶部 我使用的是 Cocos 0 8 1 和触摸调度程序方法 我可以进行触摸
  • 在 Android Studio 或 IntelliJ 中将未使用的导入报告为错误

    Android Studio 中是否有任何方法 设置可以将 java 文件中未使用的导入报告为错误 在 Eclipse 中 lint 很容易将此报告为错误 适用于 Android Studio 和 IntelliJ 你可以去File Set
  • iOS 崩溃分析和报告 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 了解 javascript 全局命名空间和闭包

    我正在尝试提高对 javascript 中的全局命名空间的理解 我对以下几件事感到好奇 是否存在一个 GOD 即父 对象 所有对象 因为除了基元之外的所有事物都是对象 都要回答 如果是这样 该对象将是 窗口 吗 为什么在全局范围内使用变量
  • 选择取消按钮时如何重置 DatePicker

    我的应用程序中有一个 datePicker 对话框 当我选择日期时效果很好 但是 如果在对话框中更改日期然后按取消 原始编辑文本将保持不变 但日期选择器仍然具有取消之前的日期 我想确保每次进入日期选择器时 它都会设置 EditText 中的