android-fragments 是不是好把自定义对话框内的基本片段androidKotlinw.r.t性能等

bzzcjhmw  于 2022-11-14  发布在  Android
关注(0)|答案(1)|浏览(127)

我在一些片段中创建自定义对话框,但我想出了一个基本片段来使用,然后从儿童片段调用。
例如,我有10个片段,其中只有3个片段在使用它。
移动带有基本片段的对话框是很好的,我只是不需要重新创建它。
"任何影响到这里的事对我来说都是好事"
如内聚性、耦合性、性能、体系结构等

nwnhqdif

nwnhqdif1#

这是一个基于观点的主题,但我认为“组合优于继承”是OOP领域中相当普遍接受的建议。
您所做的事情在性能方面并不重要,但对于代码可维护性来说,这是一个糟糕的解决方案。
一些相关的东西要读:

在这种情况下,要在没有继承的情况下执行此操作,您可以使用返回对话框的相关参数创建一个顶级扩展函数。

fun Fragment.showANumberDialog(theNumber: Int): AlertDialog =
    AlertDialog.Builder(requireContext())
        .setTitle(theNumber.toString())
        .setPositiveButton(android.R.string.ok) {}
        .show()

注意:你应该使用DialogFragment而不是一个空的对话框,这样在屏幕旋转后,以及在后台运行一段时间后返回应用程序时,对话框都会保持不变。因此,上面的例子看起来更合适:

fun Fragment.showANumberDialog(theNumber: Int) =
    ANumberDialogFragment().apply {
        arguments = bundleOf(NUM_KEY to theNumber.toString())
        show(childFragmentManager, ANumberDialogFragment.TAG)
    }

private const val NUM_KEY = "the number"

class ANumberDialogFragment : DialogFragment() {
    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog =
        AlertDialog.Builder(requireContext())
            .setTitle(arguments.getString(NUM_KEY))
            .setPositiveButton(android.R.string.ok) {}
            .show()

    companion object {
        const val TAG = "ANumberDialogFragment"
    }
}

相关问题