Vidéo: TUTO Android : Votre première application Android (mise en oeuvre avec Android Studio) 2025
L'interface utilisateur de l'exemple d'application Android utilise trois panneaux: une liste d'éléments, un panneau décrivant l'élément sélectionné dans la liste et un panneau détaillé dans plus de détails. Sur un petit écran de smartphone, chaque panneau peut être une activité distincte. Mais un écran de tablette en mode paysage a de la place pour plus d'un panneau.
L'image ci-dessous montre cette application avec deux des trois panneaux. Le panneau de gauche affiche une liste des composants du SDK Android. Le panneau de droite affiche une description du composant choisi dans la liste de gauche. (La description est en fait les premières phrases de la documentation SDK du composant.) Ce modèle de détails à droite fait partie de nombreuses interfaces utilisateur.
Pour créer l'affichage, vous créez une activité. L'activité a deux fragments - un fragment à gauche et un autre à droite. Le panneau de gauche affiche le même fragment tout au long de l'exécution de l'application, vous pouvez donc déclarer ce fragment dans le fichier de disposition de l'activité. Le panneau de droite affiche un fragment à la fois, mais le fragment change au cours de l'exécution de l'application. Ainsi, vous déclarez une disposition d'image dans le panneau de droite.
Dans le code ci-dessus, l'android: layout_ quels que soient les attributs divisent l'écran en deux moitiés - une moitié pour l'élément fragment et l'autre moitié pour l'élément FrameLayout. La stratégie avec ces attributs est de commencer par assigner un minimum de zéro pixel pour chaque élément. Bien sûr, zéro pixel signifie pas de largeur du tout (ce qui revient à être invisible). Pour éviter que les deux moitiés de la mise en page ne soient invisibles, attribuez des valeurs égales à des valeurs de layout_weight égales à zéro aux deux moitiés. Avec des valeurs de poids non nulles, chaque moitié se développe pour remplir l'espace disponible dans la mise en page.
L'utilisation du nom complet de la classe du fragment (com.allmycode.phys. ComponentNamesFragment) est intentionnelle. Un nom abrégé (tel que ComponentNamesFragment) ne coupe pas la moutarde.
Dans le cas où vous vous poseriez la question, l'élément détaillé d'Android BuiltElementBackground fournit un aspect uniforme pour des choses comme la moitié droite (les choses qui affichent des détails sur un élément que l'utilisateur a sélectionné).
Le code d'activité principal de l'application est incroyablement inintéressant.
package com. allmycode. frag; importer Android. app. Activité; importer Android. os. Paquet; La classe publique AllPurposeActivity étend l'activité {@Overide protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R.disposition. main);}}
Le code ci-dessous contient la classe ComponentNamesFragment. En vertu de la mise en page dans le premier exemple, Android plante un ComponentNamesFragment sur le côté gauche de l'écran de l'appareil.
package com. allmycode. frag; importer Android. app. FragmentManager; importer Android. app. FragmentTransaction; importer Android. app. ListFragment; importer Android. os. Paquet; importer Android. vue. Vue; importer Android. widget. ArrayAdapter; importer Android. widget. ListView; public class ComponentNamesFragment extends ListFragment {final static Chaîne [] COMPONENTS = {"Activité", "Service", "BroadcastReceiver", "ContentProvider"}; @Override public void onActivityCreated (Bundle savedInstanceState) {super. onActivityCreated (savedInstanceState); setListAdapter (nouveau ArrayAdapter (getActivity (), android R. mise en page simple_list_item_1, COMPONENTS)); @Override public void onListItemClick (ListView l, Voir v, int index, long id) {// Créer un fragment avec l'index DocsFragment docsFragment = nouveau DocsFragment (); Bundle args = Assistant. getBundleWithIndex (index); docsFragment. setArguments (args); // Efface la pile arrière FragmentManager fragmentManager = getFragmentManager (); int backStackEntryCount = fragmentManager. getBackStackEntryCount (); pour (int i = 0; iLa classe dans le code ci-dessus étend la classe ListFragment d'Android. Un ListFragment est un fragment qui affiche une liste. Très tôt dans le cycle de vie du fragment, le code de l'exemple ci-dessus définit un adaptateur de liste (plus précisément, un ArrayAdapter) pour le fragment. Alors, à quelle heure est-il "tôt"?
Le premier paramètre du constructeur ArrayAdapter est un contexte. Mais attendez! Contrairement à une activité, un fragment n'est pas un contexte. Vous ne pouvez donc pas utiliser le mot clé this pour le premier paramètre du constructeur ArrayAdapter.
Heureusement, un fragment a une méthode getActivity. Un appel à getActivity récupère l'activité à laquelle le fragment est attaché. Ainsi, pour le premier paramètre du constructeur ArrayAdapter, vous pouvez appeler getActivity. Bien sûr, vous ne pouvez pas appeler getActivity avant que le fragment ne soit associé à une activité existante. C'est pourquoi la méthode onActivityCreated du fragment est surchargée ci-dessus. Android appelle onActivityCreated après avoir attaché le fragment et appelé la méthode onCreate de l'activité. Donc tout fonctionne comme prévu.
L'androïde. app. La classe d'arrière-grands-parents de la classe d'activité est android. contenu. Le contexte. Mais l'androïde. app. La classe parente de la classe Fragment est un ancien java. lang. Objet. Par conséquent, dans le code d'une activité, le mot clé this fait référence à un contexte. Mais dans le code d'un fragment, le mot-clé ceci ne fait pas référence à un contexte.
Dans l'exemple ci-dessus, le constructeur de ArrayAdapter a trois paramètres.
Le premier paramètre est le contexte - ce méchant paramètre qui vous force à placer le constructeur dans la méthode onActivityCreated.
Le deuxième paramètre est simple_list_item_1 - une mise en page Android standard.
La disposition simple_list_item_ 1 crée l'apparence que vous voyez sur le côté gauche de l'image. Android a beaucoup de ces dispositions standard. Pour un aperçu des dispositions disponibles, visitez le site développeur d'Android.
Le troisième paramètre est la collection d'éléments qui apparaîtront dans la liste.
Dans cet exemple, ces éléments proviennent du tableau COMPONENTS, qui est déclaré dans le même exemple.
Comme ListActivity, un ListFragment a une méthode onListItemClick. Vous pouvez répondre à un clic en travaillant avec un DocsFragment, un FragmentTransaction et un FragmentManager:
Le DocsFragment représente le côté droit de l'image ci-dessus.
Une transaction fragmentée est un tas de choses que vous faites avec des fragments. Par exemple, la configuration pour remplacer un fragment par un autre est une transaction.
Un gestionnaire de fragment fait ce que son nom l'indique. Il gère les arrivées et départs de fragments.
