IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Kotlin Discussion :

Mise a jour du texte dans textView


Sujet :

Kotlin

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Kotlin
    Inscrit en
    Avril 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Kotlin

    Informations forums :
    Inscription : Avril 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Mise a jour du texte dans textView
    Bonjour à tous !

    Je suis nouveau dans la programmation, et j'ai choisi comme langage d'apprentissage Kotlin (sur Android Studio).
    J'ai suivi quelques tutos/cours pour m'initier mais j'en suis qu'au début.
    Pour apprendre, j'ai personnellement besoin de faire, la théorie c'est bien, mais je préfère la pratique.

    Bref, pour me lancer dans mon apprentissage, j'ai décidé de commencer par un petit jeu, et les problème commence
    Alors voila, j'ai un code qui est déclaré dans une var, le but du jeu c'est de trouver le code.

    Pour l'instant j'ai créé un bouton, quand j'appuye dessus, ca lance le déroulement du programme, tester les combinaisons, de 0000 à 9999, et si ça tombe sur le bon chiffre sa s'arrete.
    Lors des test (un par un de 0000 à 9999 ou de 9999 à 0000 selon si switch on ou non), j'aimerai qu'il s'affiche le resultat dans le textview, mais il s'affiche seulement lorsqu'il trouve le code, dans le if.
    Pourtant j'ai bien la sortie prinln à chaque test.

    J'ai essayé de sortir la fonction qui permet d'actualiser le texte du textView, en dehors de onCreate, puis en dehors de onCreate qui renvoi dans onCreate, fonctionne pas non plus..

    Quelqu'un pourait m'eclairer sur une solution ?

    Merci de m'avoir lu, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    package com.example.cmgiftxx
     
    import android.annotation.SuppressLint
    import android.content.Intent
    import android.os.Bundle
    import android.widget.*
    import androidx.appcompat.app.AppCompatActivity
    import java.util.*
     
     
    class MainActivity : AppCompatActivity() {
     
        //Declaration de mon bouton pour Bouton Changer
        lateinit var boutonChanger : Button
        //Declaration de mon bouton pour Bouton Changer
        lateinit var boutonPlay : Button
     
        @SuppressLint("UseSwitchCompatOrMaterialCode")
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
     
            //initialisation Bouton Changer d'Activity -------------------------------------------------
            boutonChanger = findViewById(R.id.button2)
     
            // creation de notre intent
            val monIntent : Intent =  Intent(this, MainActivity2::class.java)
     
            //clic sur le bouton
            boutonChanger.setOnClickListener {
                startActivity(monIntent)
            }
            //Fin Bouton Changer d'Acctivity -----------------------------------------------------------
     
     
     
     
            // Defile Code ------------Déroulement/Mécanisme--------------------------------------------
            var code: Int = 950
            code = ("%04d".format(code).toInt())
            var facteurVitesse: Long = 250
     
            boutonPlay = findViewById(R.id.button)
            boutonPlay.setOnClickListener {
     
                //SWITCH ACTIF OU NON///////////////////////////////////////////////////////////////////
                val sw1 = findViewById<Switch>(R.id.switch1)
                var sensCrack:IntProgression?
                if (sw1.isChecked) {
                    println("Switch on")
                    sensCrack = 9999 downTo 0
                } else {
                    println("Switch off")
                    sensCrack = 0 .. 9999
                }
                ////////////////////////////////////////////////////////////////////////////////////////
                val tVX: TextView = findViewById<TextView>(R.id.textViewX) as TextView
     
     
                run breaker@ {
                        (sensCrack).forEach { x ->
                            //Code trouvé
                            if (x.toString() == code.toString()){
                                println("Votre code est %04d".format(x))
                                tVX.text = x.toString()
                                return@breaker
                            //Code non trouvé
                            }else {  // mimic break@forEach
                                // "%04d".format(x) <---- Pour afficher au format "xxxx" ( 4 chiffres)
                                println("%04d".format(x))
                                tVX.text = x.toString()
                                Thread.sleep(facteurVitesse)
                            }
     
                        }
                    }
                }
            // Fin Defile Code -------------Fin Déroulement/Mécanisme ----------------------------------
        }
     
    }

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Points : 231
    Points
    231
    Par défaut
    Bonjour,

    Dans ce contexte les println() n'ont pas de sens, il faut renseigner le TextView et pour conserver l'affichage des différentes informations utiliser .append.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (sw1.isChecked) {
                    tVX.text = "Switch on\r\n"
                    sensCrack = 999 downTo 0
                } else {
                    tVX.text = "Switch off\r\n"
                    sensCrack = 0 .. 999
                }
    et ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tVX.append("Votre code est %04d\r\n".format(x))
    mais globalement ça ne fera hélas pas ce que tu espères, tu vas devoir retravailler ton code dans la logique d'Android.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Kotlin
    Inscrit en
    Avril 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Kotlin

    Informations forums :
    Inscription : Avril 2021
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Salut et merci pour ta réponse.

    Les println c'est pour moi, je découvre en même temps.
    Ce que j'essayais, c'est que le textview affiche 0001 jusqu'à 9999, chiffre par chiffre, mais sa sera finalement pas utile pour mon projet. Mais je comprend quand meme pas pourquoi il sort bien le println de la boucle, mais pas le textView.text = "xx".

    Ce qui me fait galerer le plus en réalité, c'est que je n'arrive pas a contrôler les objets de la MainActivity depuis sois un Thread, sois un Timer, soit d'une class qui est sur un autre fichier que la MainActivity.

    Par exemple changer le texte d'un bouton qui se trouve sur la MainActivity, depuis un Thread.

    Ou alors quand je test toute les combianaisons jusqu'a trouvé le bon code, je n'ai plus accès à l'application, et comme j'arrive pas a gérer depuis un thread.. ben je bloque.

    Si tu sais m'orienter je prend

    Qu'est-ce qui ne va pas pour que je dois revoir la logique ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     run breaker@{
                    (sensCrack).forEach { x ->
                        //Code trouvé
                        if (x.toString() == code.toString()) {
                            BoutonCase1.text=x.toString()
                            println("Votre code est %04d".format(x))
                            return@breaker
                            //Code non trouvé
                        } else {  // mimic break@forEach
                            // "%04d".format(x) <---- Pour afficher au format "xxxx" ( 4 chiffres)
                            println("%04d".format(x))
                            //function(x.toString())
                            BoutonCase1.text=x.toString()
                            Thread.sleep(facteurVitesse)
                        }
                    }
                }
    Par exemple ici, pourquoi tout fonctionne sauf le changement de texte de BoutonCase1.text, uniquement dans la partie else ?

    Bonne soirée merci

Discussions similaires

  1. VBA/Excel "Mise en forme de texte dans des cellules"
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2007, 16h20
  2. Mise a jour de date dans une DB SQL server
    Par Arfigado dans le forum ASP
    Réponses: 3
    Dernier message: 05/09/2006, 09h50
  3. Réponses: 2
    Dernier message: 27/06/2006, 08h35
  4. Mise à jour du texte dans mon scrolltaux.fla
    Par icewolf dans le forum Flash
    Réponses: 2
    Dernier message: 28/12/2005, 09h07
  5. Garder la mise en forme de texte dans un champ
    Par dany13 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/07/2005, 14h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo