Android studio par rapport au cours simple

Bonjour,
j’aimerais savoir si vous avez le même problème que moi?
Je suis les cours sur kotlin android studio. Tout se passe bien quand je suis les cours kotlin, quand tout est simple, par exemple: p1, p2, p3 héritent des fonctions de la classe personnage, c’est assez simple à comprendre. mais dès qu’on arrive sur android studio pour la création d’une application, je commence à être largué. je n’arrive même plus à savoir quand la notion d’héritage intervient…

par exemple dans ce code:

 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_third)
}

override fun onResume() {
    super.onResume()
    startSlideShow()
}

val photoList = arrayOf(R.drawable.A, R.drawable.B, R.drawable.C, R.drawable.D, R.drawable.E)
var currentPhotoIndex = 0
var countDownTimer:CountDownTimer? = null

fun nextButtonTouched(button:View){
    stopSlideShow()
    showNextPhoto()
    startSlideShow()
}

fun stopSlideShow() {
    countDownTimer?.cancel()
    countDownTimer = null
}

fun previousButtonTouched(button:View){
    stopSlideShow()
    currentPhotoIndex = currentPhotoIndex - 1
    if(currentPhotoIndex < 0){
     currentPhotoIndex = photoList.size - 1
    }
    imageView.setImageResource(photoList[currentPhotoIndex])
    startSlideShow()
}

fun startSlideShow(){
    countDownTimer = object:CountDownTimer(3000,3000) {
        override fun onFinish() {
            showNextPhoto()
            startSlideShow()
        }

        override fun onTick(millisUntilFinished: Long) {}
    }
    countDownTimer?.start()
}

fun showNextPhoto(){
    currentPhotoIndex = currentPhotoIndex + 1
    if(currentPhotoIndex >= photoList.size){
        currentPhotoIndex = 0
    }
    imageView.setImageResource(photoList[currentPhotoIndex])
}

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    outState?.putInt("currentPhotoIndex",currentPhotoIndex)
}

override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
    super.onRestoreInstanceState(savedInstanceState)
    currentPhotoIndex = savedInstanceState?.getInt("currentPhotoIndex") ?: 0
    imageView.setImageResource(photoList[currentPhotoIndex])
}

}

où est ce qu’on parle d’héritage?
j’ai l’impression que c’est vraiment compliqué quand je fais la transition des simples cours avec des personnages vers les cours d’applications avec les termes techniques d’android studio.

Salut,

dans l’exemple que tu donnes il y a très peu de notions d’héritage :

  • ta classe (SlideShowActivity?) hérite probablement de AppCompatActivity.
  • AppCompatActivity est une classe fournie par le SDK que tu n’as pas à coder toi même
  • dans ta classe tu redéfinis certaines fonctions de AppCompatActivity : onCreate et onResume

A part ces 2 fonctions onCreate et onResume tu n’utilises pas d’héritage dans le code que tu nous as montré. Pour beaucoup de projets simples tu n’utiliseras pas beaucoup d’héritage donc aucun soucis si tu ne voies pas encore à quel moment tu t’en serviras.

La plateforme Android est assez complexe en règle générale mais le mieux est de faire les exercices proposés dans l’ordre et petit à petit. Puis de regarder la correction pour essayer de visualiser les différences.
Quand tu auras fait tous les exercices et mini-apps du cours, tu auras déjà plus de recul et tu te sentiras un peu plus à l’aise.
Tu pourras alors commencer ta propre app et tu continueras à progresser :slight_smile:

C’est ce que je vais faire, mais j’aurai bien aimé avoir une petite ligne de code sur android studio pour voir comment est utilisée cette notion d’héritage lorsqu’on code une appli, je pense que ça deviendra tout de suite plus clair.

Ici tu as un exemple:

Le code de la fonction onCreate a été écrit par les développeurs de Google et ils l’ont mis dans la classe AppCompatActivity.

Ta classe hérite de AppCompatActivity comme tu dois pouvoir le voir en haut de ton fichier :

class SlideshowActivity : AppCompatActivity()

A l’intérieur de ta classe tu redéfinis la fonction onCreate avec le mot clé override et tu fais appel manuellement à la fonction présente dans la classe parent avec la ligne :

super.onCreate(savedInstanceState)

J’essaie de vous cacher au maximum tous ces concepts abstraits en début de cours mais malheureusement ils sont présent en permanence dans le kit de développement.
Plus tu vas avancer dans la création d’apps plus tu verras apparaître ces principes et avec le recul ils devraient prendre plus de sens.

question bête: pour le CountDownTimerquand on crée une variable de type CountDownTimer, comment appelle t-on ces termes qui sont créés par les développeurs de Google?

Si tu parles de object:, c’est un mot clé précisant que tu crées un objet anonyme à partir d’une classe abstraite ou d’une interface. Si je me rappelle bien j’ai dû faire une vidéos sur le sujet dans la partie cours, juste avant l’exercice sur le diaporama.