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 :

KOTLIN / JAVA : could not find method à cause des parentèses


Sujet :

Kotlin

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 13
    Points : 12
    Points
    12
    Par défaut KOTLIN / JAVA : could not find method à cause des parentèses
    Bonjour,

    je suis novice en développement kotlin (et java).

    J'ai écrit une petite application mobile qui contient un TextView. (dans un fichier xml)
    Quand l'utilisateur clique dessus, l'événement onclick déclenche une fonction "afficheInfo". (dans un fichier kt)

    Le problème est qu'il y a une erreur d'exécution si je mets des parenthèses à la fonction lors de son appel "android:onClick="afficheInfo()" : "Could not find method".
    Il faut retirer les parenthèses pour que cela ne génère pas une erreur d'exécution.

    j'aimerais savoir pour quelles raisons exactes svp ?
    A cause de cela, impossible de passer des paramètres "android:onClick="afficheInfo(1)" par exemple.

    Merci d'avance de vos lumières.

  2. #2
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2017
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2017
    Messages : 52
    Points : 56
    Points
    56
    Par défaut
    bonjour

    tu devrais mettre ton code pour avoir de l aide et regarder dans le logcat ce qu'il te renvoie come erreur

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2017
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2017
    Messages : 52
    Points : 56
    Points
    56
    Par défaut
    ci joint un code qui fonctionne qui avec un textview

    dans le MainActivity

    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
    class MainActivity : AppCompatActivity() {
     
     
     
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
     
            val phoneNumber = text.text
     
            text.setOnClickListener{
     
                val intent = Intent(Intent.ACTION_DIAL)
     
                intent.data = Uri.parse("tel:" + phoneNumber)
     
                startActivity(intent)
            }
        }
    }
    dans activity _layout
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
        <TextView
                android:text=""
                android:layout_width="248dp"
                android:layout_height="49dp"
                tools:layout_editor_absoluteY="109dp"
                tools:layout_editor_absoluteX="93dp"
                android:onClick="onClick"
                android:clickable="true"
                android:id="@+id/text"
        />
    Il faut rajouter android:onClick="onClick"
    android:clickable="true"

    j espere que cela t aidera

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2016
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par sisir8 Voir le message
    bonjour

    tu devrais mettre ton code pour avoir de l aide et regarder dans le logcat ce qu'il te renvoie comme erreur
    Bonjour et excusez-moi pour ma réponse tardive.

    Merci Sisir8 pour ta réponse.

    Je vais essayer d'être plus clair en mettant le code suivant :

    fichier Activity_main.xml
    Code XML : 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
    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:tools="http://schemas.android.com/tools"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:context=".MainActivity">
        <Button
                android:text="Ouverture"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/button"
                app:layout_constraintStart_toStartOf="@+id/txtDescription" android:layout_marginTop="24dp"
                app:layout_constraintTop_toBottomOf="@+id/txtDescription" android:onClick="afficheInfoBoutonOuverture"/>
        <Button
                android:text="Fermeture"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/button2"
                app:layout_constraintStart_toStartOf="@+id/button" android:layout_marginTop="23dp"
                app:layout_constraintTop_toBottomOf="@+id/button" android:onClick="afficheInfoBoutonFermeture"/>
        <TextView
                android:text="Description de la page"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/txtDescription" app:layout_constraintTop_toTopOf="parent"
                app:layout_constraintStart_toStartOf="parent" android:layout_marginTop="36dp"
                android:layout_marginLeft="42dp" android:layout_marginStart="42dp"/>
    </android.support.constraint.ConstraintLayout>

    fichier MainActivity.kt
    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
    package com.ng.sam.ecrantest
     
    import android.support.v7.app.AppCompatActivity
    import android.os.Bundle
    import android.view.View
    import kotlinx.android.synthetic.main.activity_main.*
     
    class MainActivity : AppCompatActivity() {
     
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
        }
     
     
        // Cette méthode est visible depuis le fichier XML
        fun afficheInfoBoutonOuverture(view : View){
            txtDescription.setText("Ouverture de la page")
        }
     
        // Cette méthode est visible depuis le fichier XML
        fun afficheInfoBoutonFermeture(view : View){
            txtDescription.setText("Fermeture de la page")
        }
     
        // PROBLEME : <== !!!
        // Cette méthode n'est pas visible depuis le fichier XML
        // C'est dommage car cela me permettrait de factoriser toutes mes fonctions afficheBoutonXXX
        //
        fun afficheInfoBouton(view : View, ch : String){
            txtDescription.setText(ch)
        }
    }
    Pour être simple, je veux pouvoir appeler la méthode "afficheInfoBouton" quand je clique sur les boutons Ouverture et Fermeture, mais elle n'est pas visible depuis le fichier XML.
    Seules les méthodes afficheInfoBoutonOuverture et afficheInfoBoutonFermeture sont visibles.
    Je pense que la présence du paramètre "ch : String" rend la méthode inaccessible depuis l'événement onClick des boutons Ouverture et Fermeture dans le fichier XML.
    Je ne comprends pas la raison.

    J'ai essayé d'être plus concis et claire
    Voici une copie d'écran qui montre que la méthode "afficheInfoBouton" n'est pas accessible depuis le fichier XML
    Nom : onclick.gif
Affichages : 261
Taille : 19,5 Ko

    Du coup, il faut que je duplique mon code "afficheInfoBouton" en deux fonctions "afficheInfoBoutonOuverture" et "afficheInfoBoutonFermeture".
    C'est dommage.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Dans le paramètre onClick tu ne vas pouvoir mettre que des méthode dont la signature est "void onClick(View v);"
    Ce que tu pourrais faire, c'est quelque chose comme ça :
    Code Kotlin : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    fun afficheInfoBouton(view : View){
        when (view.id) {
            R.id.button -> txtDescription.setText("Ouverture de la page")
            R.id.button2 -> txtDescription.setText("Fermeture de la page")
        }
    }

    ou comme ça
    Code Kotlin : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    fun afficheInfoBouton(view : View){
        txtDescription.text = view.tag.toString()
    }
    en ajoutant une balise tag dans les boutons :
    Code XML : 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
     
    <Button
                android:text="Ouverture"
                android:tag="Ouverture de la page"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/button"
                app:layout_constraintStart_toStartOf="@+id/txtDescription" android:layout_marginTop="24dp"
                app:layout_constraintTop_toBottomOf="@+id/txtDescription" android:onClick="afficheInfoBouton"/>
        <Button
                android:text="Fermeture"
                android:tag="Fermeture de la page"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/button2"
                app:layout_constraintStart_toStartOf="@+id/button" android:layout_marginTop="23dp"
                app:layout_constraintTop_toBottomOf="@+id/button" android:onClick="afficheInfoBouton"/>

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/09/2013, 17h55
  2. Programme Java et Logback : Could NOT find resource [logback.xml]
    Par zomurn dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 15/08/2012, 16h44
  3. Réponses: 5
    Dernier message: 01/08/2007, 15h07
  4. Error: could not find Java 2 Runtime Environment
    Par arfahk82 dans le forum JBuilder
    Réponses: 1
    Dernier message: 30/04/2007, 15h22

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