Существует не только способ уменьшить количество методов в вашем Activity/Fragment.
Один называется наследованием, когда вы можете расширить абстрактные методы в свой основной класс 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
person
Gastón Saillén
schedule
11.06.2019