如何使用DialogFragment和FragmentManager制作DatePicker?

2024-04-12

所以我已经在这个问题上有一段时间了,但我似乎无法弄清楚。我对 Android 开发还很陌生,所以请耐心等待。我对创建日期选择器不太熟悉,我学会了以不推荐使用的方式来完成它,只是为了掌握它的窍门。使用本教程来帮助我加快速度:

http://developer.android.com/resources/tutorials/views/hello-datepicker.html http://developer.android.com/resources/tutorials/views/hello-datepicker.html

但现在我需要更改它,主要是为了不使用已弃用的代码,所以我环顾四周,发现了 2 个教程,主要是这个:

http://www.kylebeal.com/2011/11/android-datepickerdialog-and-the-dialogfragment/ http://www.kylebeal.com/2011/11/android-datepickerdialog-and-the-dialogfragment/

问题是,有些代码没有意义。主要是这部分:

//create new DateDialogFragment
DateDialogFragment ddf = DateDialogFragment.newInstance(this, R.string.set_date, date);

ddf.setDateDialogFragmentListener(new DateDialogFragmentListener() {

    @Override
    public void dateDialogFragmentDateSet(Calendar date) {
        // update the fragment
        mDateDetailFragment.updateDate(date);
    }
});

ddf.show(getSupportFragmentManager(), "date picker dialog fragment");

这应该是它运行的活动类中运行的内容。因此,我了解了其余代码中发生的情况,并且可以随意查看其余部分,因为它可能会有所帮助。该代码基本上遵循与原始代码几乎相同的路线showDialog()代码。实施DatePickerDialog.onDateSetListener,并返回一个新的DatePickerDialog,但明显的例外是它使用 DialogFragment。但这就是我迷失的地方。

部分原因是因为我不太确定where onCreateDialog()返回新的 DatePickerDialog。如果你看我说的代码没有意义,都mDateDetailFragment and getSupportFragmentManager()从未实例化或出现在其他任何地方,因此我无法让教程代码正常工作。 Android Doc 还提到,不要使用showDialog()我应该同时使用DialogFragment and FragmentManager,这里也没有完成。仅 DialogFragment。

那么就像标题一样,我到底如何以非弃用的形式制作 DatePicker 呢?我想请问NOT给我发送一个链接,然后说“看这里”。我已经这么做了。相信我。如果没有,至少解释一下我错过了什么,这才有意义。另外,如果有人能真正告诉我在哪里onCreateDialog()方法发送DatePickerDialog,这也会非常有帮助。我只是想理解这一切,而不是复制和粘贴代码(并不是说它无论如何都能工作)。非常感谢您抽出时间阅读本文,如果需要任何说明,请询问。


按照您的帖子顺序... \

1) the onCreateDialog将对话框返回到 DialogFragment。

2)我不知道mDateDetailFragment.updateDate(date);线...我认为他可能遗漏了一些代码。EDIT找到了,它位于完整演示的 zip 文件中的类之一中。

3)您正在使用片段管理器(它是getSupportFragmentManager() part):

ddf.show(getSupportFragmentManager(), "date picker dialog fragment");

好吧,这就是我的做法(我使用的是 DateSlider,但是在 Datepicker 中进行替换对您来说应该足够简单)。

在调用 DialogFragment 的片段/活动中:

DialogFragment newFragment = new DateDialog();
newFragment.show(getFragmentManager(), "dialog"); 

还有我的 DialogFragment:

public class DateDialog extends DialogFragment {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    private DateSlider.OnDateSetListener mDateSetListener = new DateSlider.OnDateSetListener() {
        public void onDateSet(DateSlider view, Calendar selectedDate) {
            MemberAddFragment.startTxt.setText(String.format("%tB %te, %tY", selectedDate, selectedDate, selectedDate));
        }
    };

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Calendar c = Calendar.getInstance();  // Get calendar instance to use in DateSlider
        return new AlternativeDateSlider(getActivity(),mDateSetListener,c,null,null);  // return DateSlider dialog to DialogFragment
    }
}

希望这有助于消除您的困惑。

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

如何使用DialogFragment和FragmentManager制作DatePicker? 的相关文章

  • 找不到“ANDROID_HOME”环境变量

    我正在尝试构建一个 ionic android 项目 并且安装了 android sdk 我的项目名称是myApp 我已经成功将android平台添加到myApp中 但是当我尝试构建项目时 myApp sudo ionic build an
  • java中将函数作为参数传递

    我正在熟悉 Android 框架和 Java 并希望创建一个通用的 NetworkHelper 类 该类将处理大部分网络代码 使我能够从中调用网页 我按照developer android com 上的这篇文章创建了我的网络类 http d
  • 旋转对话框的自定义主题

    我想自定义当我单击 spinnermode dialog 中的微调器时出现的对话框的外观 我想使用对话框片段 但没有找到文档 是否可以 不会 外观是固定的 给人一种操作系统的感觉 您必须创建自己的微调器才能执行此操作 这并不容易 但如果微调
  • 如何修复 Kotlin JobCancellationException?

    由于 Kotlin JobCancellationException 我发生了崩溃 以下是有关崩溃的详细信息 kotlinx coroutines JobCancellationException Job was cancelled job
  • 使用缩略图作为毕加索的占位符

    从用户体验的角度来看 首先向用户显示缩略图 直到真实图像完成加载 然后向他显示 这会很棒 但是Picasso https github com square picasso仅使用资源文件作为占位符 例如 Picasso with conte
  • 如何在谷歌地图中使用latlng字符串数组绘制多边形

    在我的应用程序中 我有包含 imagview 的 recyclerview 并且该 imageview 通过使用我存储在 sqlite 中的坐标包含静态地图图像 当我单击该图像时 我将该字符串数组格式的坐标传递给其他地图活动 然后使用该字符
  • 如何以编程方式启用编辑文本的垂直滚动条

    我正在尝试实施android scrollbars vertical 通过 Java 代码在 XML 中 我尝试过方法setVerticalScrollBarEnabled true 但它不起作用 有人可以给我一个建议吗 提前致谢 您可以使
  • 如何在 Android 中启用/禁用日志级别?

    例如 我有很多日志语句需要调试 Log v TAG Message here Log w TAG WARNING HERE 在设备电话上部署此应用程序时 我想关闭详细日志记录 我可以在其中启用 禁用日志记录 The Android 文档对日
  • ArgumentMatchers.any 不得为 null

    我正在尝试测试ViewModel以确保实时数据得到正确更新 然而使用时ArgumentMatchers any 它失败了IllegalStateException saying ArgumentMatchers any mViewModel
  • WebView 未绘制,WARN/webcore(5336):第一次布局后无法获取 viewWidth

    我的应用程序有一个视图 可以使用以下代码以编程方式添加到活动中 RelativeLayout LayoutParams layoutParams new RelativeLayout LayoutParams 480 75 Relative
  • 如何让android BottomAppBar圆角化

    我正在使用BottomAppBar来自谷歌这样的
  • 等待视图通过 IdleResource 变得可见

    我正在使用 Espresso 2 2 编写仪器测试 我想测试的流程 测试点击的单选按钮 onClick 向 API 发起请求 每次不同时间我收到回复后 积极响应触发活动中调用的接口方法 onRequestSuccess 我正在屏幕上显示名为
  • 如何在android上使用xamarin表单执行脚本

    我正在尝试在 Android Mono 上使用 Xamarin Forms 运行 C 脚本 当我运行脚本时 我收到错误 System IO FileNotFoundException 找不到文件 mscorlib dll 这是我试图执行的代
  • 加载带有月份标题的 recyclerview 不同类型适配器

    如果从 api 获取不同的月份名称 则尝试将月份名称显示为标题 在这里 我加载月份标题 但是当我加载标题时 它不会加载其他视图 如果数据不同 我需要将月份加载为标题 并且还加载其他视图持有者 我看到一些例子 他们都在 Model 类中使用
  • Android SSH 示例代码

    我想创建一个 android 活动 用于与远程设备 通过 Wifi 建立 SSH 会话并在远程设备上执行一些 Linux 命令 任何人都可以获得一个快速 简短的示例 用于使用以下命令进行连接 身份验证和发送远程命令Trilead https
  • 如何在flutter上关注android tv应用程序中的列表视图项目

    我想在 flutter 中构建一个 android 电视应用程序 几乎所有事情都已完成 但一个问题是我无法集中注意力 例如一些弹出效果或边框更改任何告诉用户您现在正在使用此项目的内容 我们在列表视图中迭代的项目 我想要在应用程序中看到的图像
  • Android Studio-公司域名

    在Android Studio中 当您创建新项目时 系统会提示您输入域名 我已经知道您可以制作一个 但是如果您想在 Google Play 商店上分发您的应用程序怎么办 即使我永远不会使用我的域 我是否需要购买一个网络域来分发我的应用程序
  • 使 autocompletetextview 看起来像 edittext

    我正在使用 AutoCompleteTextView Roboto 自动完成文本视图 https github com johnkil Android RobotoTextView blob master robototextview sr
  • Oreo:应用程序未运行时不会触发警报

    我有相对简单的设置 应该在一天中的特定时间触发警报并向用户显示通知 这是相关代码 设置闹钟 long inTime expirationTime Calendar getInstance getTimeInMillis 10000 Inte
  • 什么是 Android DecorView?

    http developer android com reference android view Window html getDecorView http developer android com reference android

随机推荐

  • 使用函数 gethostbyname 编译 C 到静态链接错误

    我正在尝试使用函数编译程序gethostbyname 使用交叉编译器arm none linux gnueabi 但是当我在 android 上运行我的二进制文件时它不起作用 我的代码如下 gethostbyname example c i
  • 黄瓜无头 xvfb ubuntu

    我正在尝试在 Amazon EC2 上设置 Jenkins 构建服务器 我计划在无头模式下运行我的黄瓜测试套件 我成功地在 IRB 中无头运行 require watir webdriver require headless headles
  • 科特林。基本 JavaFX 应用程序

    尝试了 Kotlin lang 我的印象是它与 Java 兼容 因此与 JavaFX 兼容 我尝试了以下操作 public object TestKt Application public override fun start stage
  • 在 CocoaPods 1.5 中使用静态库,导入时没有这样的模块

    随着 CocoaPods 1 5 的发布 我试图将项目中的 10 15 个动态 pod 迁移到将它们作为静态库 目的是加快我的应用程序启动时间 在这个阶段 我的简单 即简单化 尝试是在运行 pod install 时删除 use frame
  • Apache Spark SQL 按范围对数据进行分组

    我有一个表包含 年龄 列 我想根据年龄将人们分为几组 例如 0 5 5 10 10 15 然后我会对每组进行相同的计算并比较结果 这样做的目的是看看年龄是否与其他变量相关 请帮忙 你可以用这个公式来计算年龄range start age a
  • 如何检查pdf页面是否有书签?

    我正在尝试检查 pdf 文件中的页面是否有书签以及该书签中的内容 我正在使用 iTextSharp text pdf 来阅读和操作 pdf 但我找不到方法检查页面是否有书签 请帮忙 谢谢 我尝试获取书签 但它获取了所有集合 但我不知道如何获
  • 监控Windows共享

    我正在尝试使用 C 监视与 Windows 共享的连接 我非常确定这是可能的 因为您可以从 Windows 控制台管理器看到连接到您的人员 虽然我不介意使用 WMI 的解决方案 但我更喜欢一些替代方法 我所说的连接是指有人在受监控的电脑上打
  • 如何使用纯 javascript 获取 DIV 内的所有 id

    我想立即获取 Div 内每个元素的每个 ID 并更改它们的所有类名 喜欢 div div div div div div div div div div 我见过使用库的解决方案 但这可以用纯 Javascript 实现吗
  • 在ASP.NET中的子控件中创建ASP.NET ReportViewer;文档结构图按钮中断

    我们在使用 Visual Studio 2008 ReportViewer 控件时遇到了一个奇怪的问题 具体来说 当我们在页面上有一个子控件 并且子控件本身承载一个报表查看器 并且该报表具有文档结构图时 显示 隐藏文档结构图按钮上的回发似乎
  • 如何使用 jQuery 将 div css 的可见性更改为可见

    我的屏幕上有 下一个 和 上一个 按钮 当页面最初加载时 我希望隐藏 上一个 按钮 并且一旦用户单击 下一个 按钮 我希望 上一个 按钮 div 标签可见 我有一个用于 上一个 按钮的 CSS 属性 我将其可见性值设置为 False 还有一
  • .htaccess mod 重写规则和与号

    我已经为此苦苦挣扎了两天 目前我有以下重写规则 RewriteRule index php u 1 NC L 它将 example com 后面的所有内容作为 GET 变量 u 移植到 index php 它正在index php中进行处理
  • XOR 加密有什么问题?

    我编写了一个简短的 C 程序来对文件进行 XOR 加密 我可以将其用于一些个人文件 如果它被破解 那没什么大不了的 我只是防止临时查看者 基本上 我采用 ASCII 密码并重复将密码与文件中的数据进行异或 但现在我很好奇 如果有人想破解这个
  • Spring Boot - 无法启动嵌入式 tomcat 错误

    pom xml
  • 类似于 std::integral_constant 但在 std C++20 库中具有自动模板参数?

    从C 20开始可以使用auto实现积分常量的模板参数 在线尝试一下 https godbolt org z 3dfq7bbP1 template
  • 使用 StackLayout 进行标签换行

    我正在使用 Xamarin 并使用 XAML 创建视图 但我一生都无法让这个标签按照我想要的方式包装 如果标签到达屏幕边缘 我希望它像这样换行 现在它看起来像这样 这是我的代码
  • 使用 Python 导出 Tensorflow 网络并在不使用 Bazel 的情况下使用 C++ 导入

    使用 TensorFlow 我尝试在 C 文件中加载我在 Python 中训练的网络 我正在保存带有输入张量的网络x和输出张量y在 Python 上 with tf Session graph tf Graph as sess tf sav
  • facebook opengraph 中的推断属性是什么意思 [重复]

    这个问题在这里已经有答案了 可能的重复 在对象调试器中得到错误的 ogtype https stackoverflow com questions 9953779 get wrong ogtype in object debugger 我有
  • 从角度服务通过管道传输时,rxjs catchError 不起作用

    使用 redux 和 Angular 我有以下效果 Effect public authenticate Observable
  • 如何分割字节数组

    我在内存中有一个字节数组 从文件中读取 我想在某个点 索引 分割字节数组 而不必只创建一个新的字节数组并一次复制每个字节 从而增加操作的内存占用 我想要的是这样的 byte largeBytes 1 2 3 4 5 6 7 8 9 byte
  • 如何使用DialogFragment和FragmentManager制作DatePicker?

    所以我已经在这个问题上有一段时间了 但我似乎无法弄清楚 我对 Android 开发还很陌生 所以请耐心等待 我对创建日期选择器不太熟悉 我学会了以不推荐使用的方式来完成它 只是为了掌握它的窍门 使用本教程来帮助我加快速度 http deve