Android - Fragments uniques

Single Frame Fragment

Le fragment de trame unique est conçu pour les appareils à petit écran tels que les appareils de maintien à la main (mobiles) et devrait être supérieur à la version Android 3.0.

Exemple

Cet exemple vous expliquera comment créer vos propres fragments . Ici, nous allons créer deux fragments et l'un d'eux sera utilisé lorsque l'appareil est en mode paysage et un autre fragment sera utilisé en cas de mode portrait. Alors, suivons les étapes suivantes pour ressembler à ce que nous avons suivi lors de la création de Hello World Exemple -

Étape La description
1 Vous utiliserez Android StudioIDE pour créer une application Android et la nommerez MyFragments sous un package com.example.myfragments , avec une activité vide.
2 Modifiez le fichier d'activité principal MainActivity.java comme indiqué ci-dessous dans le code. Ici, nous vérifierons l'orientation de l'appareil et, en conséquence, nous basculerons entre différents fragments.
3 Créez deux fichiers java PM_Fragment.java et LM_Fragement.java sous le package com.example.myfragments pour définir vos fragments et les méthodes associées.
4 Créez des fichiers de mise en page res / layout / lm_fragment.xml et res / layout / pm_fragment.xml et définissez vos mises en page pour les deux fragments.
5 Modifiez le contenu par défaut du fichier res / layout / activity_main.xml pour inclure les deux fragments.
6 Définir les constantes requises dans res / valeurs / strings.xml fichier
sept Exécutez l'application pour lancer l'émulateur Android et vérifier le résultat des modifications effectuées dans l'application.

Voici le contenu du fichier d'activité principal modifié MainActivity.java -

package com.example.myfragments;

import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.res.Configuration;
import android.os.Bundle;

public class MainActivity extends Activity {

   /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      Configuration config = getResources().getConfiguration();

      FragmentManager fragmentManager = getFragmentManager();
      FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

      /**
         * Check the device orientation and act accordingly
      */
		
      if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
         /**
            * Landscape mode of the device
         */
         LM_Fragement ls_fragment = new LM_Fragement();
         fragmentTransaction.replace(android.R.id.content, ls_fragment);
      }else{
         /**
            * Portrait mode of the device
         */
         PM_Fragement pm_fragment = new PM_Fragement();
         fragmentTransaction.replace(android.R.id.content, pm_fragment);
      }
      fragmentTransaction.commit();
   }

}

Créer deux fichiers de fragments LM_Fragement.java et PM_Fragment.java

Voici le contenu de LM_Fragement.java fichier -

package com.example.myfragments;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
   * Created by TutorialsPoint7 on 8/23/2016.
*/

public class LM_Fragement extends Fragment {
   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
      /**
         * Inflate the layout for this fragment
      */
      return inflater.inflate(R.layout.lm_fragment, container, false);
   }
}

Voici le contenu de PM_Fragement.java fichier -

package com.example.myfragments;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
   * Created by TutorialsPoint7 on 8/23/2016.
*/

public class PM_Fragement extends Fragment {
   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
      /**
         * Inflate the layout for this fragment
      */
      return inflater.inflate(R.layout.pm_fragment, container, false);
   }
}

Créer deux fichiers de mise en page lm_fragement.xml et pm_fragment.xmlsous le répertoire res / layout .

Voici le contenu de lm_fragement.xml fichier -

<?xml version="1.0" encoding="utf-8"?>
   <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:background="#7bae16">
   
   <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/landscape_message"
      android:textColor="#000000"
      android:textSize="20px" />

<!-- More GUI components go here  -->

</LinearLayout>

Voici le contenu de pm_fragment.xml fichier -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="horizontal"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:background="#666666">
   
   <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="@string/portrait_message"
      android:textColor="#000000"
      android:textSize="20px" />

<!-- More GUI components go here  -->

</LinearLayout>

Voici le contenu de res/layout/activity_main.xml fichier qui contient vos fragments -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="horizontal">

   <fragment
      android:name="com.example.fragments"
      android:id="@+id/lm_fragment"
      android:layout_weight="1"
      android:layout_width="0dp"
      android:layout_height="match_parent" />
   
   <fragment
      android:name="com.example.fragments"
      android:id="@+id/pm_fragment"
      android:layout_weight="2"
      android:layout_width="0dp"
      android:layout_height="match_parent" />

</LinearLayout>

Assurez-vous d'avoir le contenu suivant de res/values/strings.xml fichier -

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">My Application</string>
   <string name="landscape_message">This is Landscape mode fragment</string>
   <string name="portrait_message">This is Portrait mode fragment></string>
</resources>

Essayons d'exécuter notre modifié MyFragmentsapplication que nous venons de créer. Je suppose que vous avez créé votreAVDlors de la configuration de l'environnement. Pour exécuter l'application à partir d'Android Studio, ouvrez l'un des fichiers d'activité de votre projet et cliquez sur l'icône Exécuter dans la barre d'outils. Android Studio installe l'application sur votre AVD et la démarre et si tout va bien avec votre configuration et votre application, il affichera la fenêtre de l'émulateur où vous cliquerez sur le bouton Menu pour voir la fenêtre suivante. Soyez patient car cela peut prendre un certain temps en fonction de la vitesse de votre ordinateur -

Pour changer le mode de l'écran de l'émulateur, procédons comme suit -

  • fn+control+F11 sur Mac pour changer le paysage en portrait et vice versa.

  • ctrl+F11 sur Windows.

  • ctrl+F11 sur Linux.

Une fois que vous avez changé le mode, vous pourrez voir l'interface graphique que vous avez implémentée pour le mode paysage comme ci-dessous -

De cette façon, vous pouvez utiliser la même activité mais différentes interfaces graphiques via différents fragments. Vous pouvez utiliser différents types de composants GUI pour différentes interfaces graphiques en fonction de vos besoins.