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

Android Discussion :

Mon application fonctionne sur émulateur mais pas sur mon Samsung


Sujet :

Android

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 475
    Points : 586
    Points
    586
    Par défaut
    Pour te répondre Stracoma, il faut utiliser les SimpleDateFormat dont je t'ai parlé plus haut.

    new SimpleDateFormat("dd MM yyyy", Locale.FRANCE).format(pBirthday)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fun affich (maDate:Date):String{
                var ecrire:String=""
                ecrire=new SimpleDateFormat("dd/MMMM/yyyy", Locale.ENGLISH).format(maDate)
                return ecrire
            }
    Je n'ai pas vérifié, mais ca doit être à peu près ca. Et encore une fois, c'est du java

  2. #22
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 612
    Points : 1 050
    Points
    1 050
    Par défaut
    Si tu parles de ce rapport , c'était une analyse fait par Jetbrains pour Jetbrains , bref une pub pour Kotlin dissimulée
    Non, je ne parle pas de ce rapport. J'ai lu l'info ailleurs mais je ne me rappelle plus l'endroit (ça va peut-être me revenir).

    Google supporte Kotlin , mais ne le développe pas (encore).
    Pourquoi, c'est Google qui développe Java? Quand on voit le temps qu'il a fallu pour que Google prenne en compte les dernières versions de Java... Kotlin est un open-source et est devenu un langage officiel Android soutenu par Google: Je vois mal Google passer ensuite ce langage à la trappe, d'autant que son Android Studio est construit dessus et que la prise en charge du langage est faite maintenant directement au niveau d'Android Studio (création d'un projet Kotlin nativement).

    Jetbrains reste le seul maître à bord.
    Outre le fait que Kotlin est un langage open-source, c'est comme dire qu'Oracle est seul maître à bord pour Java et Microsoft seul maître à bord pour C#. Le langage existe, est supporté officiellement par le "maître" de la plateforme, alors où est le problème?

    je suis juste méfiant sur les nouveautés qui peuvent disparaître aussi vite qu'elle sont arrivées
    C'est un langage qui a déjà 7 ans (de mémoire), ce qui est "nouveau" c'est qu'il vient d'être reconnu langage officiel par Google, qui doit quand même avoir réfléchi un minimum avant de faire cette annonce officielle. Il est intégré dans l'outil officiel de programmation fourni par Google puisqu'on peut maintenant démarrer un projet intégralement sous Kotlin, le copié/collé effectue même la traduction automatique de code.
    Alors, non, franchement, l'argument du nouveau langage qui peut disparaître, c'est un argument qui ne me semble ne pas tenir la route: Kotlin a dépassé largement le stade du nouveau langage de test.

    Je pense qu'il y a même plus d'inconvénients à ce stade avec Java: Déjà entre la transparence d'Oracle et celle de Jetbrain il n'y a guère photo, au niveau de la confiance que ces sociétés m'inspirent non plus. Ensuite on a bien vu avec Android qu'il faut pleurer pour que Google gère les nouvelles versions de Java: Java est déjà un brin "archaïque", alors si en plus on doit rester sur des vieilles versions... Les nouvelles versions de Kotlin sont mises à jour en temps réel, c'est beaucoup plus réactif.

    Des Kotlin-like on en à vu passer quelque un (groovy, scala, clojure ...) combien on atteint le succès escompté ?
    Combien ont été annoncés langage officiellement supporté par Google et combien ont été intégrés à Android-Studio? Aucun!
    Donc, il n'y a pas de Kotlin-like, du moins il n'y en a plus depuis que Kotlin à été déclaré langage officiel.
    Dit autrement: Il y a deux langages officiels: Java et Kotlin, et donc pas Groovy ni Scala (entre autres), qui n'ont PAS passé le "test de qualification".

    Maintenant je comprends qu'on puisse être réticent à changer ses habitudes, mais je doute qu'inquiéter un utilisateur sur le choix de ce langage soit vraiment pertinent
    Franchement, passer de Java à Kotlin, c'est redécouvrir le passage de VB6 à C# sous Windows. C# aussi, c'était nouveau à une époque.

    Je pense que beaucoup de sociétés vont migrer vers Kotlin, au moins pour leurs nouveaux projets, quand on voit le gain de productivité possible, la rigueur supplémentaire apportée (et donc la diminution de bugs potentiels), et le côté "naturel" de ce langage par rapport à Java. Mais bon, ça, ce n'est que mon opinion personnelle. En tout cas, moi, je ne reviendrai plus sur Java, l'agrément de ce langage est un plus évident.

  3. #23
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Bonsoir
    Merci Turvy, la fonction marche nickel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fun affich (maDate:Date):String{
                var ecrire:String=""
                ecrire=SimpleDateFormat("dd/MMMM/yyyy", Locale.FRANCE).format(maDate) // je préfère Septembre à September
                return ecrire
            }
    Je ne marque pas encore résolu car j'ai d'autres soucis, mais j'essayerai d'bord tout seul
    Salut
    J'apprends la programmation pour le plaisir

  4. #24
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Bonsoir
    j'essaie d'ajouter 2 jours à date_Examen:
    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
    class MainActivity : AppCompatActivity() {
     
        @RequiresApi(Build.VERSION_CODES.O)
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
     
            fun affich (maDate:Date):String{
                var ecrire:String=""
                ecrire=SimpleDateFormat("dd/MMMM/yyyy", Locale.FRANCE).format(maDate)
                return ecrire
            }
     
     
            monBouton.setOnClickListener {
                var c1 = GregorianCalendar.getInstance()
                var c2=GregorianCalendar.getInstance()
                c1.set(1982, Calendar.SEPTEMBER, 25)
                var date_Examen = c1.time
     
                c2.set(date_Examen.year,date_Examen.month,date_Examen.date+2)
                var date_Resultat=c2.time
     
                monTextView.text=affich(date_Examen)
                //affiche: 25/septembre/1982
                sonTextView.text=affich(date_Resultat)
                //affiche: 27/septembre/0082
            }
        }
     
    }
    Pourquoi affich(date_Resultat) donne "27/septembre/0082" et non pas "27/septembre/1982"
    Merci
    J'apprends la programmation pour le plaisir

  5. #25
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Bonjour
    Je vois que la manipulation des dates est le points faible de java
    si on n'a pas d'explication à ma dernière question, peut on me dire s'il y a une fonction toute prête type:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    date_resultat=date_Examen.plusDays(2) //pas accepté par le programme 
    date_resultat=date_Examen.add(Calendar.DATE,2)  //pas accepté par le programme
    Merci
    J'apprends la programmation pour le plaisir

  6. #26
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var date_Examen:GregorianCalendar= GregorianCalendar(1982,8,23)
    var date_Resultat=date_Examen.add(GregorianCalendar.DAY_OF_MONTH,2)
    est ce que date_Resultat est automatiquement de type GregorianCalendar?
    J'apprends la programmation pour le plaisir

  7. #27
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Je suis enfin réussi à résoudre le problème à ma façon ; est ce la bonne façon? si vous avez des critiques n'hésitez pas à les poster
    J'ai d'autres questions à ce sujet mais je préfère les mettre dans une autre discussion
    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
     
    fun affich (maDate:Date):String{
                var ecrire:String=""
                ecrire=SimpleDateFormat("dd/MMMM/yyyy", Locale.FRANCE).format(maDate)
                return ecrire
            }
     
               monBouton.setOnClickListener {
     
                var c1 = GregorianCalendar(1982,8,2)
                var c2=c1
                c2.add(GregorianCalendar.YEAR,1)
                c2.add(GregorianCalendar.MONTH,1)
                c2.add(GregorianCalendar.DAY_OF_MONTH,1)
                var date_Examen=c1.time
                var date_Resultat=c2.time
                monTextView1.text=affich(date_Resultat) //affiche bien le résultat attendu "03/octobre/1983"
     
            }
    Salut
    J'apprends la programmation pour le plaisir

  8. #28
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 612
    Points : 1 050
    Points
    1 050
    Par défaut
    Ta fonction listener contient des choses inutiles, mais je présume que tu as fait ça pour effectuer des tests.

    Niveau GregorianCalendar j'ignore si c'est la meilleure façon, je n'ai pas encore utilisé.

    Par contre, pour ta fonction "affich" il est inutile de déclarer ta variable "ecrire" et de l'initialiser en deux étapes, Kotlin fait de l'inférence de type et donc tu peux écrire directement:
    var ecrire = ....

    Et de fait, vu que "ecrire" n'est plus modifié, tu peux remplacer "var" par "val"
    Mieux, tu peux supprimer ta variable et affecter ton format directement dans le "return".

    Tu te retrouves alors avec une fonction retournant une valeur et constituée d'une seule instruction, il est alors inutile d'écrire un corps de fonction complet avec return et type de retour déclaré, tu peux à nouveau utiliser l'inférence de type au niveau de la valeur de retour et remplacer le "return" par une valeur affectée directement à ta fonction à l'aide de l'opérateur "="

    Ta fonction "affich" tient alors en une seule ligne, sans accolades et sans aucune déclaration de type:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        fun affich (maDate: Date) = SimpleDateFormat("dd/MMMM/yyyy", Locale.FRANCE).format(maDate)
    Les joies de Kotlin

  9. #29
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Bonjour
    merci bcp ClaudeBg pour ta réécriture de la fonction, très intéressant ce que j'y ai appris
    Citation Envoyé par ClaudeBg Voir le message
    Ta fonction listener contient des choses inutiles
    peux tu m'indiquer les choses inutiles, je veux les savoir (à part "var date_Examen=c1.time" je ne vois pas de choses inutiles, à mon niveau).
    On apprends des choses dans ce site
    merci
    J'apprends la programmation pour le plaisir

  10. #30
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 612
    Points : 1 050
    Points
    1 050
    Par défaut
    merci bcp ClaudeBg pour ta réécriture de la fonction, très intéressant ce que j'y ai appris
    Pas de quoi. En fait c'est la façon "naturelle" de programmer en Kotlin, mais si tu fais un copié/collé de code Java tu obtiens plutôt le genre de code que tu as placé, c'est pour ça que j'ai attiré ton attention.

    peux tu m'indiquer les choses inutiles, je veux les savoir
    Comme je te le disais, inutile dans le sens que ce sont des variables internes non renvoyées par la fonction, et donc perdues, mais probablement utiles pour tes essais en mode debug
    par exemple, ta variable "date_examen" n'est jamais utilisée et donc ne sert à rien du tout. Du coup, le C1 initialisé suivi du c2 = c1 ne sert finalement pas d'avantage.
    Mais si je n'ai pas détaillé, c'est parce que j'ai bien compris que ça t'avait servi pour faire tes expérimentations et qu'il ne s'agissait pas d'une vraie fonction utile et terminée.

  11. #31
    Membre actif Avatar de stracoma
    Homme Profil pro
    Médecin
    Inscrit en
    Août 2013
    Messages
    413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Maroc

    Informations professionnelles :
    Activité : Médecin

    Informations forums :
    Inscription : Août 2013
    Messages : 413
    Points : 229
    Points
    229
    Par défaut
    Bonsoir
    Merci à tous ceux qui m'ont aidé à résoudre mon problème.
    Pour ceux qui aurront le même problème, je récapitule:
    mon problème: Mon application fonctionne sur émulateur mais pas sur mon Samsung
    La cause se trouve dans le post #11
    J'apprends la programmation pour le plaisir

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 6
    Dernier message: 10/06/2012, 21h08
  2. Fonctionne sur l’émulateur mais pas sur tablette
    Par devbot dans le forum Android
    Réponses: 2
    Dernier message: 04/12/2011, 20h53
  3. Réponses: 11
    Dernier message: 15/09/2011, 09h33
  4. Requête fonctionnant sur ssms mais pas dans mon programme
    Par tumoo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/05/2011, 14h49
  5. Réponses: 1
    Dernier message: 28/03/2007, 19h20

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