Vous êtes sur la page 1sur 6

Activité 1 

: Fragments statiques
Soit l’arborescence du projet fragment suivante :
On vous demande compléter le code des
fichiers suivants pour avoir le résultat :

fragment1.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="………varticale………………………………………….."
android:layout_width="………………match_parent ………………………………"
android:layout_height="……………match_parent………………………….. "
android:background="#00FF00"
>

<TextView
android:layout_width="……wrap_content…………………………………….. "
android:layout_height="…………… wrap_content …………………………………."
android:text="…………………fragment #1……………………………………."
android:textColor="#........ FF000000..............."
android:textSize="25sp" />
</LinearLayout>

fragment2.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="…………………vertical……………………………………."
android:layout_width="………………match_parent………………………………….."
android:layout_height="……………………match_parent………………………….."
android:background="#FFFE00"
>

<TextView
android:layout_width="………wrap_content……………………………………………."
android:layout_height="…………wrap_content……………………………….."
android:text="………………Fragment #2………………………………………."
android:textColor="#.... FF000000.............."
android:textSize="25sp" />
</LinearLayout>

activity_main.xml
<LinearLayout android:orientation="………………vertical………………………………………"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="………match_parent………………………………………………………"
android:layout_height="…………match_parent………………………………….. "
tools:context="http://schemas.android.com/tools. ">

<…………fragment………………………………………
android:name=" com.example.myapplication.BlankFragment….."
android:id="@+id/fragment1"
android:layout_weight="………"
android:layout_width="fill_parent"
android:layout_height="match_parent" />
<…………………Fragment………………………………………
android:name=" com.example.myapplication.BlankFragment2.."
android:id="@+id/fragment2"
android:layout_weight="….."
android:layout_width="fill_parent"
android:layout_height="match_parent" />

</LinearLayout>

Frament1.java
Package …… com.example.myapplication;………………………………..;
import android.app .Fragment……..;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment1 extends …… Fragment………… {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle
savedInstanceState) {
return …… inflater.inflate(R.layout.fragment_blank, container,
false }
}

Frament2.java
package com.example.myapplication;…;

import android.app….Fragment…………………………………………………..;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment2 extends ……Fragment…… {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle
savedInstanceState) {
return … return inflater.inflate(R.layout.fragment_blank2,
container, false) }
}

Activité 2 : Fragments dynamiques


En utilisant le même projet créé dans la section précédente,
modifiez le fichier activity_main.xml en mettant en commentaire
les deux éléments <fragment>.
Puis apportez les modifications nécessaires au fichier
MainActivity.java pour que l’affichage change selon
l’orientation de votre téléphone :

MainActivity.java
package …com.exemple.myapplication……………………………………………………….;

import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.util.DisplayMetrics;
public class MainActivity extends ……AppCompactAcivity………………………… {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction =
fragmentManager.beginTransaction();
//---get the current display info---
DisplayMetrics display = this.getResources().getDisplayMetrics();
int width = display.widthPixels;
int height = display.heightPixels;
if (width> height)
{
//---landscape mode---
Fragment1 fragment1 = ………New Fragment1()…………………………………….;
// android.R.id.content refers to the content view of the activity
fragmentTransaction.replace(
……R.Id.fragment………………………………………………., ………………
fragment1…………………………………..);
}
else
{
//---portrait mode---
Fragment2 fragment2 = new …………Fragment2()……………………………….;
fragmentTransaction.replace(
…………R.Id.fragment…………………………………………, ……………
fragment2……………………………………………);
}
fragmentTransaction.commit();
}
}

Activité 3 : Cycle de vie des Fragments


En utilisant le même projet créé dans la section précédente,
modifiez le fichier Fragment1.java de la manière suivante :
package com.example.fragments;
import android.app.Activity;
import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class Fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle
savedInstanceState) {
Log.d("Fragment 1", "onCreateView");

return inflater.inflate(
R.layout.fragment1, container, false);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
Log.d("Fragment 1", "onAttach");
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("Fragment 1", "onCreate");
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
Log.d("Fragment 1", "onActivityCreated");
}
@Override
public void onStart() {
super.onStart();
Log.d("Fragment 1", "onStart");
}
@Override
public void onResume() {
super.onResume();
Log.d("Fragment 1", "onResume");
}
@Override
public void onPause() {
super.onPause();
Log.d("Fragment 1", "onPause");
}
@Override
public void onStop() {
super.onStop();
Log.d("Fragment 1", "onStop");
}
@Override
public void onDestroyView() {
super.onDestroyView();
Log.d("Fragment 1", "onDestroyView");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d("Fragment 1", "onDestroy");
}
@Override
public void onDetach() {
super.onDetach();
Log.d("Fragment 1", "onDetach");
}
}

Lorsque l'application est chargée sur l'émulateur, les éléments


suivants s'affichent dans la console logcat dans Android
Monitor:
2019-10-02 13:50:33.044 6397-6397/? D/Fragment 1: ………
onPause………
2019-10-02 13:50:33.045 6397-6397/? D/Fragment 1: …onStop ……………
2019-10-02 13:50:33.083 6397-6397/? D/Fragment 1: …
onDestoruview ………………..
2019-10-02 13:50:33.088 6397-6397/? D/Fragment 1: ……
OnDestory………………
2019-10-02 13:50:33.095 6397-6397/? D/Fragment 1: ……
onDetach……………
2019-10-02 13:50:33.120 6397-6397/? D/Fragment 1: …
onAttach………………

Cliquez sur le bouton Accueil de l'émulateur. La sortie


suivante est affichée dans la console logcat:
2019-10-02 13:53:59.076 6397-6397/com.example.fragments
D/Fragment 1: ………On create ………………………
2019-10-02 13:53:59.407 6397-6397/com.example.fragments
D/Fragment 1: …oncrateView…………………………..

Sur l'émulateur, cliquez sur le bouton Accueil et maintenez-le


enfoncé. Lancez l'application à nouveau. Cette fois, ce qui
suit est affiché :

2019-10-02 13:56:38.767 6397-6397/com.example.fragments


D/Fragment 1: …………… On create …………………..
2019-10-02 13:56:38.768 6397-6397/com.example.fragments
D/Fragment 1: ……… oncrateView ………………………….

Cliquez sur le bouton Précédent de l'émulateur. Vous devriez


maintenant voir le résultat suivant:

019-10-02 13:59:46.794 6397-6397/com.example.fragments


D/Fragment 1: ……OnAttach……………………….
2019-10-02 13:59:47.533 6397-6397/com.example.fragments
D/Fragment 1: ……On create………………
2019-10-02 13:59:47.533 6397-6397/com.example.fragments
D/Fragment 1: ………On createView ………………………….
2019-10-02 13:59:47.534 6397-6397/com.example.fragments
D/Fragment 1: ………onActivitycreated…………………………
2019-10-02 13:59:47.534 6397-6397/com.example.fragments
D/Fragment 1: ………On start……………