:: Enseignements :: ESIPE :: E4INFO :: 2012-2013 :: Interface Graphique avec Android ::
[LOGO]

Fragments, WebView et traitements longs


Le but du TD est d'implanter une application qui affiche une liste d'URLs. Quand l'une d'entre elles est touchée, la page web correspondante devra s'afficher à côté dans le cas d'une tablette ou d'une orientation paysage du téléphone. Elle recouvrera la liste dans le cas d'une orientation portrait du téléphone. Pour réaliser ceci, nous utiliserons des fragments.
Nous allons commencer par implanter le cas d'une orientation portrait du téléphone au moyen de deux activités contenant chacune un Fragment. Puis, nous adapterons notre code pour traiter le cas d'une tablette ou d'une orientation paysage du téléphone.

Exercice 1 - Une première activité

  1. Quelle est l'utilité d'un Fragment? A quoi servent un ListFragment et un ListAdapter?
  2. Créer une activité MainActivity qui contient un fragment UrlListFragment contenant une liste d'URLs. La liste sera remplie à la main pour l'instant.
  3. Tester cette activité.

Exercice 2 - Une deuxième activité

  1. Créer une activité WebPageActivity qui contient un fragment WebPageFragment contenant une page web. Vous utiliserez une WebView. Pour l'instant, la page web par défaut est: http://esipe.univ-mlv.fr.
  2. Tester cette activité. Pourquoi ne fonctionne-t-elle pas?
  3. Déclarer l'activité dans le Manifest de l'application.
  4. Modifier les permissions dans le Manifest de l'application pour autoriser l'application à aller sur internet.
  5. A quoi sert la méthode setWebViewClient d'une WebView? Utiliser cette méthode.
  6. Retester l'activité WebPageActivity.

Exercice 3 - Invoquer une activité à partir d'une autre

  1. Comment faire en sorte qu'en touchant un item de la liste dans MainActivity l'activité WebPageActivity soit invoquée?
  2. Ecrire le code de la solution proposée.
  3. Comment faire en sorte que la page web ouverte soit celle correspondent à l'url touchée?
  4. Ecrire le code de la solution proposée.

Exercice 4 - Deux fragments côte-à-côte

  1. Créer un nouveau layout permettant de placer les deux fragments des deux activités précédentes côte à côte.
  2. Modifier l'activité MainActivity pour gérer dynamiquement l'application suivant les deux cas évoqués.

Exercice 5 - Traitements longs

  1. Créer un fichier qui contient une liste d'urls (une url par ligne). Placer ce fichier à la racine de votre page web.
  2. Modifier MainActivity pour que la liste de la ListFragment soit celle de ce fichier. Utiliser une ASyncTask.
  3. On souhaite maintenant que la liste de la ListFragment se mette à jour à chaque fois que le fichier est modifié. Modifier MainActivity. Indication: utiliser la méthode runOnUiThread de votre activité.