AndroidX之前和之后的DialogPreference之间的区别

AndroidX之前和之后的DialogPreference之间的区别,第1张

概述我们目前正在使用Android应用项目迁移到Androidx命名空间.但是我注意到不仅命名空间似乎已经改变了.对于DialogPreference,现在也缺少一些之前使用的接口>新界面:https://developer.android.comeference/androidx/preference/DialogPreference>旧接口:https://developer.android.

我们目前正在使用Android应用项目迁移到AndroIDx命名空间.但是我注意到不仅命名空间似乎已经改变了.对于DialogPreference,现在也缺少一些之前使用的接口

>新界面:https://developer.android.com/reference/androidx/preference/DialogPreference
>旧接口:https://developer.android.com/reference/kotlin/android/preference/DialogPreference

例如,似乎缺少以下方法:onBindDialogVIEw,showDialog,onDialogClosed.

由于我们使用其中一些方法来影响对话框的默认行为,因此我不清楚我现在应该如何实现此功能.例如,我们在关闭对话框之前验证输入,我们将值保存在数据库中而不是共享偏好中,并向对话框添加一些动态元素.

有没有其他人已经遇到过这个问题并找到了解决方案?我在文档中遗漏了什么吗?我们可以/应该使用另一个概念吗?

可以使用Fragments而不是DialogPreference,但是对于少量内容(例如,用户可以选择的树项目列表),这对我来说似乎是一个很大的开销……

解决方法:

从androIDx源文件开始,我已经使用以下过程将基于旧DialogPreference的自定义类迁移到新的androIDx.preference.DialogPreference:

第1步

基于旧版DialogPreference的旧自定义对话框类(例如CustomDialogPreference)应拆分为两个单独的类:

>一个类(例如CustomPreference)应该扩展androIDx.preference.DialogPreference,并且只包含与首选项处理(数据管理)相关的代码.
>另一个类(例如CustomDialog)应该扩展androIDx.preference.PreferenceDialogFragmentCompat,并且只包含与对话框处理(用户界面)相关的代码,包括onDialogClosed.此类应公开静态方法newInstance以返回此类的实例.

第2步

在基于PreferenceFragmentCompat的主片段处理首选项中,应重写ondisplayPreferenceDialog方法以显示自定义对话框,例如:

    private static final String DIALOG_FRAGMENT_TAG = "CustomPreference";    @OverrIDe    public voID ondisplayPreferenceDialog(Preference preference) {        if (getFragmentManager().findFragmentByTag(DIALOG_FRAGMENT_TAG) != null) {            return;        }        if (preference instanceof CustomPreference) {            final DialogFragment f = CustomDialog.newInstance(preference.getKey());            f.setTargetFragment(this, 0);            f.show(getFragmentManager(), DIALOG_FRAGMENT_TAG);        } else {            super.ondisplayPreferenceDialog(preference);        }    }
总结

以上是内存溢出为你收集整理的AndroidX之前和之后的DialogPreference之间区别全部内容,希望文章能够帮你解决AndroidX之前和之后的DialogPreference之间的区别所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1097597.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存