Существует больше, чем способ сократить методы из вашей Активность / Фрагмент
Один называется наследование , где вы можете расширить абстрактные методы в свой основной Activity / Fragment класс и управлять жизненным циклом оттуда.
Например, используя BaseActivity или BaseFragment , вы можете иметь более одного метода внутри него и просто расширить его на свой основной Activity
или Fragment
BaseActivity.kt
abstract class BaseActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
requestWindowFeature(Window.FEATURE_NO_TITLE)
window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
super.onCreate(savedInstanceState)
setContentView(getLayout())
}
@LayoutRes
abstract fun getLayout(): Int
fun Context.toast(message: String?, toastDuration: Int = Toast.LENGTH_SHORT) {
Toast.makeText(this, message, toastDuration).show()
}
override fun onDestroy() {
super.onDestroy()
//Do here what you want
}
override fun onStop() {
super.onStop()
//Do here what you want
}
override fun onStart(){
super.onStart()
//Do here what you want
}
override fun onPause() {
super.onPause()
//Do here what you want
}
override fun onRestart() {
super.onRestart()
//Do here what you want
}
* *} Тысяча двадцать-один
Эта BaseActivity расширяет AppCompatActivity()
, что означает, что вы можете управлять жизненным циклом вашего Activity
в этом классе, а затем просто расширять его в своем основном Activity
, когда вы делаете это все функциональные возможности внутри BaseActivity будут применены к вашему MainActivity
классу. Если вы хотите что-то изменить или переопределить, просто вызовите методы из этого абстрактного класса.
MainActivity.kt
class MainActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//You dont need setContentView since we do all the configuration in the BaseActivity
toast("This is a message with a toast since we implemented thi into the BaseActivity we do not need to do toasts all over again")
}
override fun getLayout(): Int {
return R.layout.activity_login_view
}
//For example, if you want to override the functionallity from a method inside your BaseActivity you can implement it like always
override fun onRestart() {
super.onRestart()
//Replace what BaseActivity onRestart() does
}
Делая это, вы можете иметь более 1 метода вашего Activity
внутри вашей BaseActivity , это уменьшит методы внутри вашего класса, которые наследуются от BaseActivity , также, если это нужно для работы с Fragments
, просто расширьте Fragment
вместо AppCompatActivity
и создайте класс с именем BaseFragment
Кроме того, добавление интерфейса для операций просмотра и презентаций - отличный способ организации наших приложений. Вы можете взглянуть на пример, который я делаю для входа в систему Github