[英]How to override a method of another class instance in Java/Kotlin?
我有一個 class ,其中有一個 Fragment 實例,並且想要覆蓋片段方法。 我怎樣才能在這里進行這種覆蓋?
class MyClass(val fragment: Fragment) {
init {
fragment.onActivityCreated = onActivityCreated //what should be written?
}
fun onActivityCreated(savedInstanceState: Bundle?) {
actions()
super.onActivityCreated(savedInstanceState)
}
}
感謝刪除的答案,完成的機制如下所示:
class MyClass<T>(private val viewModelPayments: PaymentsViewModel, val fragment: T) where T : Fragment, T : Featured {
init {
fragment.doOnActivityCreated(::onActivityCreated)
fragment.doOnActivityResult(::onActivityResult)
}
private fun onActivityCreated(savedInstanceState: Bundle?) {
//...
}
private fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
//...
}
}
interface Featured {
fun doOnActivityCreated(action: (savedInstanceState: Bundle?) -> Unit)
fun doOnActivityResult(action: (requestCode: Int, resultCode: Int, data: Intent?) -> Unit)
}
abstract class FeatureFragment : BaseFragment(), Featured {
private var onActivityCreatedAction: ((savedInstanceState: Bundle?) -> Unit)? = null
private var onActivityResultAction: ((requestCode: Int, resultCode: Int, data: Intent?) -> Unit)? = null
override fun doOnActivityCreated(action: (savedInstanceState: Bundle?) -> Unit) {
onActivityCreatedAction = action
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
onActivityCreatedAction?.invoke(savedInstanceState)
}
override fun doOnActivityResult(action: (requestCode: Int, resultCode: Int, data: Intent?) -> Unit) {
onActivityResultAction = action
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
onActivityResultAction?.invoke(requestCode, resultCode, data)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.