Я новичок в разработке приложений Android и Kotlin. Итак, теперь у меня есть приложение (написанное с Kotlin) с 20 действиями, одно go за другим: Activity1 -> Activity2 -> ... -> Activity20.
Все они имеют одинаковую структуру XML файлов, которые отличаются только представленным изображением. У них тоже есть похожий код. Поскольку в каждом действии есть 2 кнопки (NEXT и BACK), они различаются только «nextActivity» и «previousActivity» (например, кнопка NEXT для намерений Activity3 Activity4 и кнопка NEXT для намерений Activity5, Activity6 и т. Д.).
В какой-то момент меня это начало беспокоить, поэтому я попытался написать открытый класс:
open class everyActivity(pic: Int, nextActivity: Activity, prevActivity: Activity): AppCompatActivity() {
val pic = pic
val nextActivity = nextActivity
val prevActivity = prevActivity
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(pic)
}
fun nextClick(view: View) {
val nextIntent = Intent(this, nextActivity::class.java)
startActivity(nextIntent)
this.finish()
}
fun backClick(view: View){
val prevIntent = Intent(this, prevActivity::class.java)
startActivity(prevIntent)
this.finish()
}
}
Затем я попытался унаследовать эти похожие действия, но я не могу передать Activity в качестве аргумента для класса ( из-за того, что «Классификатор 'Activity2' не имеет объекта-компаньона и так далее»):
class Activity2 : everyActivity(R.layout.activity_02, Activity3, Activity1) {}
И в целом такая конструкция выглядит довольно странно. Тогда я подумал, что, возможно, мне вообще не придется этого делать.
Итак, последний вопрос :
Существует принцип DRY, который учитывает большинство программ. Однако я хочу знать: действительно ли удобно иметь похожие коды для действий в Android?