Partage
  • Partager sur Facebook
  • Partager sur Twitter

MOOC Android

    3 juin 2016 à 10:01:45

    Salut Thanystos!

    Pour ta question, les flux s'affichent effectivement aléatoirement (en fonction du premier qui a fini de télécharger j'imagine ^^).

    Je suis bloqué au même point que toi, tu as la solutions pas propre avec 3 recyclerView, sinon il faudrait une solution pour créer le document à partir des 3 flux (puis le trier par date pour les points bonus) avant de l'envoyer à la vue.

    Je n'ai personnellement rien trouvé pour ça, malgré pas mal de recherche sur le net, j'ai donc repris un tuto java dans l'espoir d'avoir plus d'information.

    https://openclassrooms.com/courses/creez-des-applications-pour-android

    Par contre je veux bien savoir comment tu as fait pour lancer plusieurs AsyncTask en parallèle ?

    tout le long du tutoriel on nous dit que c'est impossible et qu'elles s’exécuteront forcément à la suite des autres.

    J'ai le sujet en "suivre" donc à nous 2 on devrais bien réussir ce TP ; )

    • Partager sur Facebook
    • Partager sur Twitter
      3 juin 2016 à 13:25:06

      Salut Jalips !

      Merci pour la réponse, ça me rassure de voir que je ne suis pas le seul à bloquer sur ce point :p

      Concernant les solutions que tu proposes, oui effectivement j'y avais pensé, notamment le fait de trouver un moyen de réunir les 3 flux dans un même document (les concaténer je me disais) mais impossible de trouver comment faire ou un quelconque indice sur le net :( Je vais continuer à chercher et te tiendrai au courant si jamais j'ai quelque chose !

      Sinon concernant les AsyncTask parallèles je t'invite à lire ceci: http://android-er.blogspot.fr/2014/04/run-multi-asynctask-as-same-time.html

      Tu verras c'est pas trop compliqué à mettre en place et tu constateras que les 3 tâches afficheront presque toutes en même temps (à quelques millièmes de seconde) le "finished" si t'as pensé à mettre un Log.e("XMLAsyncTask", "Finished"); dans le onPostExecute de ces dernières !

      Par contre je sais pas si t'as déjà implémenté le bouton "rafraîchir" comme demandé dans l'énoncé mais si tu veux relancer des AsyncTask la seule solution consistera à recréer de nouvelles instances (moi j'avais galéré à comprendre ça)

      Voilà bon courage !

      • Partager sur Facebook
      • Partager sur Twitter
        3 juin 2016 à 15:00:23

        Re-salut,

        Oui le gap de compétences sur le TP en comparaison des autres est quand même assez important !

        J'ai eu la même idée que toi, concaténation de fichier XML, je sais déjà le faire en PHP du moment que les fichiers gardent le même format (ici notre cas) mais en Java je bloque... les seules informations à ce sujet me ramène à crée un fichier physique !

        Manque de compétences en Java j'imagine ? ou solution plus simple ?

        Pour les asyncTask en parallèle j’étais tombé sur les mêmes infos que toi mais je m'était dit que c'était pas la solution la plus "propre" sachant qu'on nous rabâche dans le tuto que c'est "pas fait pour".

        Donc je vais regarder pour reprendre le tp avec le guide que tu m'as fournis.

        Pour le rafraichissement j'avais réussi avec la même solution que toi, relancer des instances même si je trouve pas ça optimal : (

        Je ne sais pas quand je reprendrais l'activité vu que j'ai commencé un autre tuto android (sur OpenClassRoom, non certifiant mais bien plus complet et détaillé que je conseil) mais je reste à suivre le sujet et je ne manquerais pas d'y poster mes évolutions.

        Merci à toi et bon courage pour la suite ; )

        • Partager sur Facebook
        • Partager sur Twitter
          6 juin 2016 à 17:17:14

          Salut a tous,

          je constate que beaucoup peine sur le TP 3, voici quelques pistes :

          - Les AsyncTask ne se deroulent pas en parallele... par defaut ! Il est possible de les faires se derouler en parallele. Vous avez donc deux choix : soit trouver comment faire pour que plusieurs AsyncTask se deroulent en parallele, soit utiliser les threads (et la fonction runOnUiThread). A vous de voir :)

          - L'ordre d'affichage des news peut etre definit par leur date, pour cela, vous pouvez utiliser la methode Collections.sort().

          • Partager sur Facebook
          • Partager sur Twitter
          Architecte logiciel R&D
            6 juin 2016 à 18:48:01

            Bonjour tout le monde !

            J'ai une petite question concernant le TP de la partie 3 (encore une fois) !

            Je viens d'en arriver à bout mais une chose me perturbe concernant ce qui doit être affiché dans l'activité qui se lance après clic sur un élément de notre liste d'articles. Il s'agit bien de charger ici une page WEB, je me trompe ?

            Merci ^^'

            • Partager sur Facebook
            • Partager sur Twitter
              6 juin 2016 à 19:12:31

              @Thanystos

              oui

              -
              Edité par Philippe2463 6 juin 2016 à 21:22:03

              • Partager sur Facebook
              • Partager sur Twitter
              La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                6 juin 2016 à 21:18:30

                SalomonBrys a écrit:

                Salut a tous,

                je constate que beaucoup peine sur le TP 3, voici quelques pistes :

                - Les AsyncTask ne se deroulent pas en parallele... par defaut ! Il est possible de les faires se derouler en parallele. Vous avez donc deux choix : soit trouver comment faire pour que plusieurs AsyncTask se deroulent en parallele, soit utiliser les threads (et la fonction runOnUiThread). A vous de voir :)

                - L'ordre d'affichage des news peut etre definit par leur date, pour cela, vous pouvez utiliser la methode Collections.sort().

                Merci pour ta réponse !

                C'est vrai qu'en lisant le Mooc j'ai surtout retenu qu'il ne fallait PAS utiliser les AsyncTask en parallèle, que c'était possible mais vraiment pas une bonne pratique.
                J'ai réussi à le faire avec des threads mais je n'arrive pas à sortir le code le la class "main" à cause du runOnUiThread mais j'imagine que c'est ici un manque de compétences en Java sur ce type de fonctions. :euh:

                Je vais reprendre ça et finir le TP 3, utilisations des Collections donc :pirate:

                • Partager sur Facebook
                • Partager sur Twitter
                  10 juin 2016 à 11:32:39

                  antrax_2013 a écrit:

                  Bonjour à tous,

                  Désolé de poser cette question mais y a un truc que j'ai du rater.

                  Je suis en train de faire l'activité n°1 et je n'arrive pas à définir un titre à ma webView. Je fais un setTilte() et la valeur de la string est correct. J'ai bien un thême avec une toolBar. En mode design je vois le nom de l'application dans la toolbar mais une fois l'application elle n'apparait plus.

                  Bref je comprends pas avez vous une idée?

                  Merci par avance.


                  J'ai trouvé la cause. Si ça peut aider quelqu'un. Cela vient du fait que l'activité sans toolBar hérite de "Activity" et non de "AppCompatActivity".

                  -
                  Edité par antrax_2013 10 juin 2016 à 11:33:01

                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 juin 2016 à 10:21:42

                    Bonjour à tous,


                    Je bloque aussi pas mal sur le TP 3.

                    J'ai réussi à créer une AsyncTask qui va récupérer successivement les flux RSS passés en paramètres, et les afficher (gràce à une boucle for).

                    Les 3 flux s'affiche successivement dans mon application, mais chaque flux écrase le précédent.

                    J'ai fait des recherche sur internet, mais je n'arrive pas à savoir s'il faut que mon AsyncTask traite elle-même les infos reçu, et les merge dans un unique DOM Document, ou si au contraire, il vaut mieux que l'AsyncTask renvoi un document unique par flux, et que ce soit l'Adapter qui mette à jour le document en ajoutant au document actuel le nouveau (dans la classe setXMLDocument).

                    Par ailleurs, comment cocatener ou merger deux flux rss? ou deux DOM Document?

                    J'èspère avoir été clair dans mon explication.

                    Antonin

                    • Partager sur Facebook
                    • Partager sur Twitter
                      16 juin 2016 à 10:43:36

                      Bonjour,

                      essai de t'arranger pour que tes flux se mettent à la suite des précédents dans un document et renvoi ce document.

                      A+

                      -
                      Edité par Philippe2463 16 juin 2016 à 10:44:18

                      • Partager sur Facebook
                      • Partager sur Twitter
                      La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                        16 juin 2016 à 14:28:49

                        Rebonjour,


                        J'ai essayé de créer une SequenceInputStream pour ensuite la parser en une fois, mais ça ne marche pas.
                        Auriez-vous une piste pour pouvoir créer un Document et y ajouter les flux au fur et à mesure.


                        Au cas où je vous mets mon code pour le SequenceInputStream

                                    for (String param:params) {
                                        URL url = new URL(param);
                                        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                                        _s2 = connection.getInputStream();
                                        if(_s1 != null) {
                                            _sources = new SequenceInputStream(_s1, _s2);
                                            _s1 = _sources;
                                        } else {
                                            _s1 = connection.getInputStream();
                                        }
                                    }
                        
                                    try{
                                        return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(_sources);
                                    }
                        
                                    finally {
                                        _sources.close();
                                    }

                        Par avance merci

                        Antonin

                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 juin 2016 à 15:52:12

                          Je ne sais pas si c'est la solution la plus orthodoxe mais j'avais créé un Elément root auquel je rajoutais mes flux de cette manière:

                          root = flux.getDocumentElément();



                          • Partager sur Facebook
                          • Partager sur Twitter
                          La chute n'est pas un échec, l'échec c'est de rester là où on est tombé!
                            22 juin 2016 à 18:26:31

                            Bonjour,

                            Je me situe encore dans le 1er Chapitre (encore vraiment débutant  ^^)

                            Le problème est que lorsque je lance mon simulateur Nexus S (API 23), mon application ne se lance pas (elle ne se trouve d'ailleurs pas dans le téléphone simulé) or je pense avoir tout fait comme dans la formation...

                            Je désespère d'autant plus car mon téléphone n'est pas sous Android.. donc mon unique moyen de tester mon appli c'est le simulateur^^

                            Merci de m'éclairer :D

                            • Partager sur Facebook
                            • Partager sur Twitter
                              25 juin 2016 à 16:37:33

                              Axel_Paris a écrit:

                              Bonjour,

                              Je me situe encore dans le 1er Chapitre (encore vraiment débutant  ^^)

                              Le problème est que lorsque je lance mon simulateur Nexus S (API 23), mon application ne se lance pas (elle ne se trouve d'ailleurs pas dans le téléphone simulé) or je pense avoir tout fait comme dans la formation...

                              Je désespère d'autant plus car mon téléphone n'est pas sous Android.. donc mon unique moyen de tester mon appli c'est le simulateur^^

                              Merci de m'éclairer :D


                              Mon problème est résolu !

                              Pour ceux qui veulent savoir pourquoi, c'est parce que je n'avais pas la dernière version du JDK (attention, il faut aller dans les paramètre du logiciel Android Studio afin de lui dire de prendre la nouvelle version du JDK) 

                              Voila j'espère que j'aurais pu aider :)

                              • Partager sur Facebook
                              • Partager sur Twitter
                                27 juin 2016 à 23:40:05

                                Bonjour, 

                                Voici un extrait de code du Mooc sur android (chapitre 2 partie 5 sur les RecyclerView). Et plus précisément le ViewHolder.

                                public class MyViewHolder extends RecyclerView.ViewHolder {
                                
                                       private final TextView name;
                                       private final TextView description;
                                
                                       private Pair<String, String> currentPair;
                                
                                       public MyViewHolder(final View itemView) {
                                           super(itemView);
                                
                                           name = ((TextView) itemView.findViewById(R.id.name));
                                           description = ((TextView) itemView.findViewById(R.id.description));
                                
                                           itemView.setOnClickListener(new View.OnClickListener() {
                                               @Override
                                               public void onClick(View view) {
                                                   new AlertDialog.Builder(itemView.getContext())
                                                           .setTitle(currentPair.first)
                                                           .setMessage(currentPair.second)
                                                           .show();
                                               }
                                           });
                                       }
                                
                                       public void display(Pair<String, String> pair) {
                                           currentPair = pair;
                                           name.setText(pair.first);
                                           description.setText(pair.second);
                                       }
                                   }

                                Je n'arrive pas à comprendre comment la méthode Onclick(View view) du new View.OnClickListener() réussisse à accéder à l'élément currentPair qui appartient au Holder.

                                Pour moi, il ne devrait pas pouvoir y accéder :(

                                Si quelqu'un peut éclairer ma lanterne, je suis preneur :)

                                -
                                Edité par PetitGrigri 27 juin 2016 à 23:42:51

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  28 juin 2016 à 0:17:55

                                  Salut,

                                  C'est ce qu'on appelle une implémentation inline. Dans ces cas là, l'implémentation inline tient une référence de la classe contenante (dans ton cas le Holder) permettant alors de manipuler ses attributs.

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    28 juin 2016 à 10:11:39

                                    Bonour je vient de débuté ce MOOC,et je n'arrive pas à passer au 3eme chapitre, il s'affiche les erreurs en capture suivant :

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      28 juin 2016 à 10:28:04

                                      @Dedian : Le mieux est que tu ouvres ton propre sujet sur le forum avec les messages d'erreurs complets.

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        28 juin 2016 à 10:28:37

                                        Les erreurs sont :

                                        Error:Execution failed for task ':app:mergeDebugResources'.
                                        > Error: org.gradle.process.internal.ExecException: A problem occurred starting process 'command '/home/dedian/Android-dev/android-sdk-linux/build-tools/19.1.0/aapt''


                                        :app:mergeDebugResources FAILED
                                        Error:org.gradle.process.internal.ExecException: A problem occurred starting process 'command '/home/dedian/Android-dev/android-sdk-linux/build-tools/19.1.0/aapt''

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          28 juin 2016 à 10:31:01

                                          Merci.

                                          Peut-tu me guider, je vient d'écrire mon premier mot.

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            3 juillet 2016 à 0:24:14

                                            je veux affiché le contenu de mon ma table sur un radio

                                            code java:

                                            RadioButton q1;
                                                RadioButton q2;
                                            
                                                RequestQueue requestQueue;
                                                String Url = "http://192.168.1.5:8888/anglais/details.php";
                                            
                                                @Override
                                                protected void onCreate(Bundle savedInstanceState) {
                                                    super.onCreate(savedInstanceState);
                                                    setContentView(R.layout.anglais_exo);
                                                    final_result = (TextView) findViewById(R.id.result_text);
                                                    final_result.setEnabled(false);
                                            
                                                    q1 = (RadioButton)findViewById(R.id.Q1R1);
                                                    q2 = (RadioButton)findViewById(R.id.Q1R2);
                                            
                                                    requestQueue = Volley.newRequestQueue(getApplicationContext());
                                            
                                                    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET,
                                                            Url, new Response.Listener<JSONObject>() {
                                                        @Override
                                                        public void onResponse(JSONObject response) {
                                                            try {
                                                                JSONArray students = response.getJSONArray("cours");
                                            
                                                                for(int i = 0; i < students.length(); i++){
                                            
                                                                    JSONObject cour = students.getJSONObject(i);
                                            
                                                                    Log.d("valeur", "cour");
                                            
                                                                    String lecons = cour.getString("exo1");
                                            
                                                                    q1.setText(lecons);
                                                                    q1.setText(lecons);
                                                                }
                                            
                                                            }catch (JSONException e){
                                                                e.printStackTrace();
                                                            }
                                                        }
                                                    }, new Response.ErrorListener(){
                                                        @Override
                                                        public void onErrorResponse(VolleyError error){
                                            
                                                        }
                                                    });
                                            
                                                }
                                            


                                            code json

                                            {
                                            	"cours": [{
                                            		"id": "1",
                                            		"lecon": "Conjugaison du verbe aller avec les auxiliaires etre et avoir.",
                                            		"exo1": "I am going",
                                            		"exo2": "I have going",
                                            		"reponse": "exo1",
                                            		"valide": "oui",
                                            		"jour": "2016-05-19"
                                            	}, {
                                            		"id": "2",
                                            		"lecon": "la 3eme personne du singulier",
                                            		"exo1": "He drink",
                                            		"exo2": "He drinks",
                                            		"reponse": "exo2",
                                            		"valide": "",
                                            		"jour": "2016-05-26"
                                            	}]
                                            }

                                            voici le xml du radiobouton

                                            <RadioButton
                                                    android:layout_width="wrap_content"
                                                    android:layout_height="wrap_content"
                                                    android:text="xxxx yyyy xxx"
                                                    android:id="@+id/Q1R1"
                                                    android:layout_below="@+id/textView5"
                                                    android:layout_alignLeft="@+id/textView5"
                                                    android:layout_alignStart="@+id/textView5"
                                                    android:checked="false"
                                                    android:onClick="Q1"
                                                    />

                                            je veux changé la valeur text du radiobutton par la valeur "exo1" du json mais rien ne se passe, l'application se connecte bien au fichier json


                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              15 juillet 2016 à 19:07:21

                                              Bonjour,

                                              Je bloque également assez tôt sur l'énoncé de l'activité de la partie 3 (plusieurs flux RSS).

                                              Si j'ai bien compris la librairie fournie dans le TP duquel on part, est là pour lire le flux du site hnapp, or ce flux était en JSON... 

                                              http://hnapp.com/json?q=star%20wars

                                              Du coup doit-on modifier ce code pour lire de l'XML (comme on l'avait fait dans les exercices précédents) ?

                                              En effet on ne peut pas simplement modifier l'URL du flux et la remplacer par celle du Monde, car celle-ci renvoie de l'XML, pas du JSON...

                                              http://www.lemonde.fr/rss/une.xml

                                              Ou alors doit-on partir du code des exercices précédents ?

                                              Quelque chose m'échappe ici... pourriez-vous me débloquer svp ?

                                              Par avance merci ! :)

                                              -
                                              Edité par TheMuton 15 juillet 2016 à 19:13:29

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                22 juillet 2016 à 3:40:29

                                                Bonjour a tous 

                                                Merci pour ce MOOC, je viens de débuter et je suis bloqué au TP de la première partie (lancé de dé), j'ai une ERREUR lorsque je "Roll the dice".

                                                La ligne  at com.revolution.geomatics.lancerde.NextActivity.onClick(NextActivity.java:38) fait référence à textResult.setText(String.valueOf(result));

                                                 MERCI D'avance

                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                  22 juillet 2016 à 8:46:23

                                                  @CedricWafo : Peux-tu ouvrir ton propre post avec notamment le code de ton activity et du layout associé ?

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    22 juillet 2016 à 11:49:15

                                                    Merci de votre réponse rapide:)

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter

                                                      7 août 2016 à 13:07:01

                                                      Bonjour à tous, 

                                                      Je bloque aussi sur le TP3.

                                                      J'ai réussi à :

                                                      _Télécharger les flux avec des AsyncTasks en parallèle.
                                                      _Afficher les flux dans une RecyclerView
                                                      _Trier les articles par date

                                                      Mais je n'arrive pas à envoyer un Document dom ou une ArrayList<Element> avec le Intent.putExtra

                                                      J'ai essayé le putParcelableExtra mais comme les éléments Dom ne semblent pas implémenter la libraire parcelable ça ne marche pas...

                                                      Du coup je ne sais pas si je m'y prends correctement ou pas.

                                                      Pouvez-vous m'aiguiller ?

                                                      Merci

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        7 août 2016 à 16:55:49

                                                        Bonjour à tous , 

                                                        Tout d'abord merci à Salomon pour ce tuto qui me permet de toucher de plus prêt le dev sur android .

                                                        Je viens de finir le tp du lancé de dé , et je me suis rendu compte qu'il m'étais impossible de faire descendre ma page sur l'émulateur en mode paysage.

                                                        Ce qui fait que je ne peut pas voir la suite de ma page. Sur le menu de l'émulateur je peut descendre sans problème en utilisant le clic gauche , mais pas sur l'appli , ce qui me fait dire que la boulette viens de moi qui ai du oublier quelque chose mais la.... honnêtement, soi je suis fatigué, soi j'ai pas les yeux en face des trous mais je ne comprend pas pourquoi...

                                                        Si quelqu'un peu m'éclairer je lui en serais tréééés reconnaissant !

                                                        A bientôt ! 

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          10 août 2016 à 13:11:15

                                                          salut tout le monde . svpl , j'ai un projet contient deux apps une pour  pc desktop , ecrite en java  , et l'autre app faite en android .

                                                          vous pouvez m'indiquer les etapes que je dois suivre pour etablir une connexion entre les deux apps , et echanger des datas? . merci d'avance

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            11 août 2016 à 14:01:55

                                                            Bonjour à tous,

                                                            Je suis occupé avec la 1er activité à rendre pour ce cours et je bloc à un endroit, c'est quand lorsqu'on clic sur un élément de la recyclerView et qu'on doit atterrir sur la page détaille du titre

                                                            public class MyViewHolder extends RecyclerView.ViewHolder {
                                                            
                                                                    private final TextView newsTitel;
                                                                    private FakeNews currentNews;
                                                                    private Activity activity;
                                                            
                                                                    public MyViewHolder(final View itemView) {
                                                                        super(itemView);
                                                            
                                                                        newsTitel = ((TextView) itemView.findViewById(R.id.newsTitel));
                                                            
                                                                        // l'action de cliquer sur le titre
                                                                        itemView.setOnClickListener(new View.OnClickListener() {
                                                                            @Override
                                                                            public void onClick(View view) {
                                                                                Intent intent = new Intent(itemView.getContext(), MyWebViewActivity.class);
                                                                                activity.startActivity(intent);
                                                                            }
                                                                        });
                                                                    }
                                                            
                                                                    public void display(FakeNews fk) {
                                                                        currentNews = fk;
                                                                        newsTitel.setText(fk.title);
                                                                    }
                                                                }

                                                            voila ce que j'ai pour le moment en me basant sur le cours et sur un ancien message posté ici

                                                            le soucis est donc avec le startActivity(intent), j'ai du mal à voir comment bien l'utiliser

                                                            là comme ça le code ne rougit rien mais si je lance l'apk et que je clic, hop ça plante

                                                            je suis assez perdu :/ ce qui me perturbe le plus c'est que je regarde les anciens commentaire d'ici où ça fonctionne xD

                                                            je vais continuer de chipoter et merci d'avance pour les réponses qui m'aiderait ^^"

                                                            edit: pour le moment je vais juste que cliquer quelque part envoie vers une autre activité, les passages de variables viendront après ;-)

                                                            et oui tout est bien mit dans le manifeste :D

                                                            -
                                                            Edité par kingdomflo 11 août 2016 à 14:03:59

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              11 août 2016 à 14:19:09

                                                              là comme ça le code ne rougit rien mais si je lance l'apk et que je clic, hop ça plante

                                                              Quand ton application plante, tu as dans le logcat ce qu'on appelle une stacktrace (des lignes en rouges). C'est l'étude de ces lignes qui vont permettre de comprendre le problème. Ouvre un nouveau sujet en remettant ton code et la stacktrace pour qu'on l'analyse.

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              MOOC Android

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              • Editeur
                                                              • Markdown