P层
open class BasePresenter<V> {
var view : V ? = null
}
activity
abstract class BaseActivity<V,P:BasePresenter<V>>: AppCompatActivity() {
var presenter : P? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(getLayout())
presenter = initPresenter()
presenter?.view = this as V
initData()
}
abstract fun getLayout():Int
abstract fun initData()
abstract fun initPresenter():P?
override fun onDestroy() {
super.onDestroy()
presenter?.view = null
presenter = null
}
}
fragment
abstract class BaseFragment<V,P:BasePresenter<V>> : Fragment() {
var presenter: P? = null
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(getLayout(),container,false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
presenter = initPresenter()
presenter?.view = this as V
initData()
}
abstract fun getLayout(): Int
abstract fun initPresenter():P?
abstract fun initData()
override fun onDestroy() {
super.onDestroy()
presenter?.view = null
presenter = null
}
}
本文探讨了基于BasePresenter的设计模式在Android、iOS和Web应用中的应用,展示了如何通过基类BasePresenter统一Fragment和Activity的视图管理,并实现Presenter的抽象。涉及关键概念如抽象方法getLayout()、initData()和initPresenter()的实现细节。
1万+

被折叠的 条评论
为什么被折叠?



