gpt4 book ai didi

android - 如何优化 Kotlin 中 Context、Fragment 和 Activity 的扩展功能代码?

转载 作者:行者123 更新时间:2023-12-04 23:47:44 27 4
gpt4 key购买 nike

代码 A 是 Context 的扩展函数, FragmentActivity .
我认为它是多余的,我该如何优化它?
代码 A

    fun Context.toast(msg: String){
Toast.makeText(this, msg, Toast.LENGTH_LONG).show()
}

fun Context.toast(@StringRes resId: Int){
toast(getString(resId))
}

fun Context.toast(@StringRes resId: Int,msg: String){
toast(getString(resId) + msg)
}

fun Context.toast(msg: String,@StringRes resId: Int){
toast(msg + getString(resId))
}

//------------------------------------------------

fun Fragment.toast(msg:String) {
requireContext().toast(msg)
}

fun Fragment.toast(@StringRes resId: Int) {
toast(requireContext().getString(resId))
}

fun Fragment.toast(@StringRes resId: Int, msg: String) {
toast(requireContext().getString(resId) + msg)
}

fun Fragment.toast( msg: String, @StringRes resId: Int) {
toast(msg+ requireContext().getString(resId))
}

//------------------------------------------------

fun Activity.toast(msg: String){
Toast.makeText(this, msg, Toast.LENGTH_LONG).show()
}

fun Activity.toast(@StringRes resId: Int){
toast(getString(resId))
}

fun Activity.toast(@StringRes resId: Int,msg: String){
toast(getString(resId) + msg)
}

fun Activity.toast(msg: String,@StringRes resId: Int){
toast(msg + getString(resId))
}

最佳答案

上下文扩展功能应该足够了。您几乎可以在任何有 UI 组件可用的地方使用它。
我们可以删除 Activity 的扩展名因为ActivityContext 的间接子类类(class)。
我们也可以删除Fragment扩展,因为它们在 fragment 附加到 Activity (即上下文)之前没有用。

fun Context.toast(msg: String){
Toast.makeText(this, msg, Toast.LENGTH_LONG).show()
}

fun Context.toast(@StringRes resId: Int){
toast(getString(resId))
}

fun Context.toast(@StringRes resId: Int,msg: String){
toast(getString(resId) + msg)
}

fun Context.toast(msg: String,@StringRes resId: Int){
toast(msg + getString(resId))
}
这些函数可以在 Activity 中使用:
Use of extension functions in Activity
并在一个 fragment 中。我们必须首先获得对 Context 的引用,这在逻辑上是正确且有意的。 :
Use of extension functions in Fragment

关于android - 如何优化 Kotlin 中 Context、Fragment 和 Activity 的扩展功能代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63544394/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com