{"id":472,"date":"2014-10-27T18:07:00","date_gmt":"2014-10-27T17:07:00","guid":{"rendered":"http:\/\/chezdom.net\/etu\/?p=472"},"modified":"2015-10-26T15:54:43","modified_gmt":"2015-10-26T14:54:43","slug":"472","status":"publish","type":"post","link":"https:\/\/chezdom.net\/etu\/2014\/10\/27\/472\/","title":{"rendered":"TP1 &#8211; Une petite appli de conversion"},"content":{"rendered":"<p>Il s&rsquo;agit de faire une application permettant de faire une conversion (de degr\u00e9s celsius en farenheit, ou de conversion de monnaies, comme vous voulez).<\/p>\n<h2>Partie 1 &#8211; Interface graphique<\/h2>\n<p>1. Cr\u00e9ez un projet Android dans eclipse (avec une activit\u00e9 de type BlankActivity). N&rsquo;oubliez pas d&rsquo;indiquez un nom de package (par exemple : <em>fr.univ-paris8.master-handi.montp<\/em>, les noms de package s&rsquo;\u00e9crivent plut\u00f4t en minuscules).<\/p>\n<p>2. Ouvrez l&rsquo;\u00e9diteur graphique de <em>layout<\/em>. Ins\u00e9rer les widgets n\u00e9cessaires pour notre convertisseur. Le TextView se trouve dans la palette <em>Form Widgets<\/em> (vous pouvez prendre un \u00ab\u00a0Large\u00a0\u00bb), et l&rsquo;EditText dans la palette <em>Text Fields<\/em>.<\/p>\n<p>4. Changez les \u00e9tiquettes des 2 TextView et du bouton : click droit, menu \u00ab\u00a0Edit Text&#8230;\u00a0\u00bb en utilisant plut\u00f4t des \u00ab\u00a0Strings\u00a0\u00bb que du directement du texte (cliquez sur le bouton \u00ab\u00a0New string\u00a0\u00bb, dans les 2 champs du haut de la boite de dialogue, ins\u00e9rez le texte et un ID.<\/p>\n<h2>Partie 2 &#8211; Impl\u00e9mentation<\/h2>\n<p>1. Ouvrez le source java (dans le navigateur de projet : cherchez le dossier \u00ab\u00a0src\u00a0\u00bb, puis trouvez le code de l&rsquo;activit\u00e9 (par d\u00e9faut MainActivity.java sauf si vous l&rsquo;avez chang\u00e9 dans l&rsquo;assistant de cr\u00e9ation de projet).<\/p>\n<p>2. Cr\u00e9ez des attributs pour garder une r\u00e9f\u00e9rence sur les 2 champs de texte :<\/p>\n<pre class=\"brush: java; gutter: false\">  private EditText champTextDecimal, champTextBinaire;<\/pre>\n<p>et les associer aux \u00e9l\u00e9ments du layout gr\u00e2ce \u00e0 leurs ID (dans la m\u00e9thode <em>onCreate<\/em>) :<\/p>\n<pre class=\"brush: java; gutter: false\">  champTextDecimal=(EditText) findViewById(R.id.editTextDec);<\/pre>\n<p>Ici l&rsquo;ID a \u00e9t\u00e9 modifi\u00e9 (l&rsquo;ID par d\u00e9faut est \u00ab\u00a0edittext1\u00a0\u00bb). On trouve les ID par un click droit sur l&rsquo;objet correspondant dans l&rsquo;\u00e9diteur graphique d&rsquo;\u00e9crans (menu \u00ab\u00a0Edit Id\u00a0\u00bb).<\/p>\n<p>3. Toujours dans la m\u00e9thode <em>onCreate<\/em>, d\u00e9clarer la classe courante comme <em>listener<\/em> du bouton. Cela nous permettra de traiter les \u00e9v\u00e9nements en provenance du bouton. <\/p>\n<pre class=\"brush: java; gutter: false; first-line: 1; highlight: []; html-script: false\">  Button b=(Button) this.findViewById(R.id.buttonConv);\r\n  b.setOnClickListener(this);<\/pre>\n<p>Il n&rsquo;est pas n\u00e9cessaire de garder la r\u00e9f\u00e9rence au bouton en attribut (sauf si on a besoin de changer fr\u00e9quemment le texte pr\u00e9sent sur le bouton).<\/p>\n<p>Maintenant il faut que la classe courante (<em>MainActivity<\/em>) impl\u00e9mente l&rsquo;interface <em>OnClickListener<\/em>, et donc impl\u00e9menter la m\u00e9thode :<\/p>\n<pre class=\"brush: java; gutter: false; first-line: 1; highlight: []; html-script: false\">public void onClick(View v)<\/pre>\n<p>.<\/p>\n<p>Dans un premier temps on enverra simplement un \u00ab\u00a0<em>toast<\/em>\u00ab\u00a0, c&rsquo;est \u00e0 dire un message temporaire \u00e0 l&rsquo;utilisateur :<\/p>\n<pre class=\"brush: java; gutter: false; first-line: 1; highlight: []; html-script: false\">Toast.makeText( getApplicationContext(), \r\n                &quot;texte du message&quot;, \r\n                Toast.LENGTH_SHORT).show();<\/pre>\n<p>4. Impl\u00e9mentez la m\u00e9thode de conversion : allez chercher le texte saisi dans le champs correspondant (attention la m\u00e9thode <em>getText()<\/em> de <em>EditText<\/em> ne renvoie pas directement un String, il faut le convertir, par exemple, en utilisant \u00ab\u00a0<em>toString()<\/em>\u00ab\u00a0, puis convertir cette cha\u00eene en entier. On utilisera la m\u00e9thode \u00ab\u00a0<em>setText(&#8230;)<\/em>\u00a0\u00bb pour placer le r\u00e9sultat dans le champ de saisie correct. <\/p>\n<p>5. On remarque que cette application ne fonctionne que dans un sens. Ajoutez un second bouton pour faire la conversion inverse, et impl\u00e9mentez la. Maintenant que nous aurons 2 boutons, la m\u00e9thode de traitement des \u00e9v\u00e9nements (<em>onClick<\/em>) doit faire la diff\u00e9rence entre les 2. Pour cela on utilisera la m\u00e9thode getId() de l&rsquo;objet View pass\u00e9 en argument, et on le comparera \u00e0 l&rsquo;ID du bouton.<\/p>\n<p>6. Cherchez sur Internet la fa\u00e7on de se passer des boutons de conversion : comment faire pour que la conversion se fasse en temps r\u00e9el, \u00e0 chaque fois qu&rsquo;on entre un chiffre dans le champs de saisie.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il s&rsquo;agit de faire une application permettant de faire une conversion (de degr\u00e9s celsius en farenheit, ou de conversion de monnaies, comme vous voulez). Partie 1 &#8211; Interface graphique 1. Cr\u00e9ez un projet Android dans eclipse (avec une activit\u00e9 de<span class=\"ellipsis\">&hellip;<\/span> <span class=\"read-more\"><a href=\"https:\/\/chezdom.net\/etu\/2014\/10\/27\/472\/\">Lire la suite &#8250;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":""},"categories":[9,3],"tags":[],"class_list":["post-472","post","type-post","status-publish","format-standard","hentry","category-android","category-handi"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/s9qu1A-472","_links":{"self":[{"href":"https:\/\/chezdom.net\/etu\/wp-json\/wp\/v2\/posts\/472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chezdom.net\/etu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chezdom.net\/etu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chezdom.net\/etu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chezdom.net\/etu\/wp-json\/wp\/v2\/comments?post=472"}],"version-history":[{"count":3,"href":"https:\/\/chezdom.net\/etu\/wp-json\/wp\/v2\/posts\/472\/revisions"}],"predecessor-version":[{"id":475,"href":"https:\/\/chezdom.net\/etu\/wp-json\/wp\/v2\/posts\/472\/revisions\/475"}],"wp:attachment":[{"href":"https:\/\/chezdom.net\/etu\/wp-json\/wp\/v2\/media?parent=472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chezdom.net\/etu\/wp-json\/wp\/v2\/categories?post=472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chezdom.net\/etu\/wp-json\/wp\/v2\/tags?post=472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}