Я пытался следовать принципам solid и хочу улучшить свой код. Поэтому я хочу отделить функцию, которая может не использоваться в некоторых проблемах.
это код, который я уже отделил, но все еще избыточен
private lateinit var dialogView : View
private lateinit var b : AlertDialog
override fun modalDialog(
view:Int,
listener: bodyModalDialog, submitButtonModalDialog: submitButtonModalDialog,
btnSubmit:Int,
btnCancel:Int) {
val dialogBuilder = AlertDialog.Builder(this, android.R.style.Theme_DeviceDefault_Light_Dialog_Alert)
val inflater = this.layoutInflater
dialogView = inflater.inflate(view, null)
dialogBuilder.setView(dialogView)
dialogBuilder.setCancelable(false)
var uiSubmitButton = dialogView.findViewById<View>(btnSubmit)
var uiCancelButton = dialogView.findViewById<View>(btnCancel)
listener.bodyDialog(dialogView)
uiSubmitButton.setOnClickListener {
submitButtonModalDialog.submitButton(dialogView)
b.cancel()
}
uiCancelButton.setOnClickListener {
b.cancel()
}
b = dialogBuilder.create()
b.window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
b.show()
}
override fun modalDialogNoBody(
view:Int,
listener: submitButtonModalDialog,
btnSubmit:Int,
btnCancel:Int) {
val dialogBuilder = AlertDialog.Builder(this, android.R.style.Theme_DeviceDefault_Light_Dialog_Alert)
val inflater = this.layoutInflater
dialogView = inflater.inflate(view, null)
dialogBuilder.setView(dialogView)
dialogBuilder.setCancelable(false)
var uiSubmitButton = dialogView.findViewById<View>(btnSubmit)
var uiCancelButton = dialogView.findViewById<View>(btnCancel)
uiSubmitButton.setOnClickListener {
listener.submitButton(dialogView)
b.cancel()
}
uiCancelButton.setOnClickListener {
b.cancel()
}
b = dialogBuilder.create()
b.window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
b.show()
}
из того кода, который я пытался отделить когда проблема нужна телу, а некоторым нет. Так что, если я позволю им получить доступ к телу, оно будет просто пустым, поэтому я расстанусь вот так. Но код избыточен, потому что он пишет один и тот же код с одним из них, нет тела. Поэтому я попытался сделать так, чтобы один из них просто взял другой код и добавил процедуру тела, но я не знаю, как это сделать. Я попытался создать объект, поэтому, когда он вызвал true, это означает, что тела нет, а если false, есть тело, подобное этому коду
object Modal{
fun isNoBody(view:Int,
listener: submitButtonModalDialog,
btnSubmit:Int,
btnCancel:Int):Boolean{
val dialogBuilder = AlertDialog.Builder(this, android.R.style.Theme_DeviceDefault_Light_Dialog_Alert)
val inflater = this.layoutInflater
dialogView = inflater.inflate(view, null)
dialogBuilder.setView(dialogView)
dialogBuilder.setCancelable(false)
var uiSubmitButton = dialogView.findViewById<View>(btnSubmit)
var uiCancelButton = dialogView.findViewById<View>(btnCancel)
uiSubmitButton.setOnClickListener {
listener.submitButton(dialogView)
b.cancel()
}
uiCancelButton.setOnClickListener {
b.cancel()
}
b = dialogBuilder.create()
b.window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
b.show()
return true
}
}
, но это не сработает, потому что AlertDialog
и View
могут не назовёшься туда. даже если я изменю их на publi c. помогите пожалуйста