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 :

Détecter le clic sur préférence Android


Sujet :

Android

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Détecter le clic sur préférence Android
    Bonjour,

    Dans les préférences de mon application de veut pouvoir sélectionner la langue et que celle-ci se modifie immédiatement pour cela il faudrait que j'arrive a détecter quand l'utilisateur appuie sur l'option maleureusement l'action Onpreferenceclick ne arche que au moment ou on appuie sur le listpreference et pas sur l'une des options comprise a l'intérieur. J'ai aussi vu le OnpreferenceChange mais celui ne marche pas. Sauriez-vous comment faire?

    Dans le layout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            <ListPreference 
                android:key="language_selection"
                android:title="@string/settings_language_title"
                android:summary="@string/settings_language_summary"
                android:defaultValue="0"
                android:entries="@array/updateLanguage"
                android:entryValues="@array/updateLanguageValues"
            />
    Dans le array.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        <string-array name="updateLanguage">
            <item name="de">Deutsch</item>
            <item name="fr">Français</item>
            <item name="it">italiano</item>
            <item name="en">English</item>
        </string-array>
     
        <string-array name="updateLanguageValues">
            <item name="de">de</item>
            <item name="fr">fr</item>
            <item name="it">it</item>
            <item name="en">en</item>
        </string-array>
    Merci d'avance et Bonne Journée

    Michaël

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Ne connaissant pas excatement ton environnement du projet, je te conseille quand même d'éciter de pouvoir modifier la langue dans ton application.

    L'utilisateur peut la changer depuis les paramètres de son téléphone. A moins que cela soit une particularité de ton application le mieux est de se baser depuis la langue enregistrés dans les paramètres.


    Après tu peux toujours ouvrir les settings du téléphones depuis ton appliaction, à toi de voir.

    Sinon tu vas avoir du mal à gérer les langues dans ton téléphones car celui ci ne se fera pas automatiquement via les strings :s
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 67
    Points : 87
    Points
    87
    Par défaut
    Dans le cas d'un Item de l'ActionBar (à partir de l'API 11), la méthode à implémenter est

    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
     
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
            case R.id.new_game:
                newGame();
                return true;
            case R.id.help:
                showHelp();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    http://developer.android.com/guide/t...ingOptionsMenu

    Mais j'ai l'impression que tu utilises autre chose ?!

    Tu utilises ceci : onPreferenceChange(Preference preference, Object newValue)

    http://developer.android.com/referen...eListener.html

    Peut-on voir le code associé pour voir si tu crées et lies correctement ton Listener ?

    Citation Envoyé par Feanorin Voir le message
    Bonjour,

    Ne connaissant pas excatement ton environnement du projet, je te conseille quand même d'éciter de pouvoir modifier la langue dans ton application.

    L'utilisateur peut la changer depuis les paramètres de son téléphone. A moins que cela soit une particularité de ton application le mieux est de se baser depuis la langue enregistrés dans les paramètres.


    Après tu peux toujours ouvrir les settings du téléphones depuis ton appliaction, à toi de voir.

    Sinon tu vas avoir du mal à gérer les langues dans ton téléphones car celui ci ne se fera pas automatiquement via les strings :s
    Moi on m'avait proposé de "forcer" la langue système dans le contexte de l'application, et ça fonctionne bien. Vu que le contexte change, l'OS utilise les "bonnes" ressources.

    Par contre il faut prendre soin d'updater toutes les vues avec les nouvelles ressources.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Locale locale = new Locale("fr_CA");
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
    http://www.developpez.net/forums/d12...n-multilingue/

  4. #4
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Moi on m'avait proposé de "forcer" la langue système dans le contexte de l'application, et ça fonctionne bien. Vu que le contexte change, l'OS utilise les "bonnes" ressources.
    Yep en changeant les locales tu peux (avais oublié ), mais je ne trouve pas cela terrible à part pour certains cas.
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2011
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2011
    Messages : 67
    Points : 87
    Points
    87
    Par défaut
    Citation Envoyé par Feanorin Voir le message
    Yep en changeant les locales tu peux (avais oublié ), mais je ne trouve pas cela terrible à part pour certains cas.
    Pourquoi tu ne trouves pas ça terrible ?

    Ton avis sur la question m'intéresse. A priori je ne vois pas de contre-indications à faire celà ? Ça permet justement d'exploiter le processus de sélection intelligent des ressources. Mais surtout, je ne vois pas d'autres possibilité que de gérer "manuellement" une variable de langue et de choisir dynamiquement les ressources à charger...

  6. #6
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Pourquoi celle du système n'irait pas ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  7. #7
    Membre du Club Avatar de kader15
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2016
    Messages : 65
    Points : 43
    Points
    43
    Par défaut
    Voilà j'espère que ça t'aidera

    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
     
     
    private Preference myPref ;
    public static final String KEY = "key";
     
    myPref = (Preference)findPreference(KEY);
     
    myPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
     
     
                    if(preference.getKey().equals(KEY)) {
     
                        //ton code
     
                    }
     
                    return false;
                }
            });
    Cordialement,


    Partager notre connaissance, c'est le début d'un monde en Paix.

    "L'ignorance mène à la peur, la peur mène à la haine et la haine conduit à la violence. Voilà l'équation." Averroès

    Ball Is Life !

  8. #8
    Membre expert
    Avatar de MathiasSeguy
    Homme Profil pro
    Fondateur Android2EE - Formation Expertise Android
    Inscrit en
    Avril 2011
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Fondateur Android2EE - Formation Expertise Android
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 185
    Points : 3 692
    Points
    3 692
    Billets dans le blog
    6
    Par défaut
    Kader15 a la bonne reponse, on n'écoute pas le click mais le changement de valeur de la préférence.
    Par contre, Fearonin a trop raison:
    Ne connaissant pas excatement ton environnement du projet, je te conseille quand même d'éciter de pouvoir modifier la langue dans ton application.

    L'utilisateur peut la changer depuis les paramètres de son téléphone. A moins que cela soit une particularité de ton application le mieux est de se baser depuis la langue enregistrés dans les paramètres.


    Après tu peux toujours ouvrir les settings du téléphones depuis ton appliaction, à toi de voir.
    C'est pas à vous de changer la langue, c'est à l'utilisateur s'il le souhaite. Son téléphone est dans sa langue, je me serai battu jusqu'à démissionner face à une telle exigence.... perso, il aura vraiment fallu me convaincre avec des arguments bétons et pas du "oui mais sur le web c'est comme ça qu'on fait"... perso, je dis ça je dis rien.

Discussions similaires

  1. Détecter le clic sur un élément en particulier
    Par pasqual dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/11/2009, 15h30
  2. Détecter un clic sur une bannière flash
    Par big_ben3333 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/08/2009, 10h23
  3. Détecter un clic sur le bouton "Page précédente" : c'est possible.
    Par tetrab dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/12/2008, 16h23
  4. Détecter le clic sur la touche F1 dans une form.
    Par demando77 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 26/05/2008, 16h11
  5. Détecter les clics sur un lien
    Par morgan47 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 08/11/2006, 19h55

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