我有一个扩展
fun Fragment.showToast(message: String, toastLength: Int = Toast.LENGTH_SHORT) {
Toast.makeText(context, message, toastLength).show()
}
在项目中我们使用 MVP:
interface MyContract {
interface View {
fun showToast(message: String)
}
}
class MyFragment : Fragment(), MyContract.View {
override fun showToast(message: String) {
showToast(message)
}
}
所以在 MyFragment.showToast(message)
中我希望调用扩展函数而不是 StackOverflowException
。
是否可以直接调用扩展函数?像这样的东西:
Fragment.showToast(this, message)
或者我只需要提供另一个名字?
最佳答案
您可以将 MyFragment 类转换为 Fragment 并执行:
class MyFragment : Fragment(), MyContract.View {
override fun showToast(message: String) {
val fragment = this as Fragment
fragment.showToast(message)
}
}
这样你就会引用到Fragment类的扩展函数
关于android - 使用方法扩展和继承时名称冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54746863/