Single Fragment trong Android



Single Fragment trong Android

Single Frame Fragment được thiết kế cho các thiết bị màn hình nhỏ (các thiết bị cầm tay như mobile), có trong Android 3.0 trở lên.

Ví dụ

Ví dụ sau giải thích cách bạn tạo cho riêng mình các Fragment. Ở đây, chúng ta sẽ tạo hai Fragment và một trong số chúng được sử dụng khi thiết bị là trong chế độ Landscape, cái khác cho thiết bị trong chế độ Portrait. Bạn theo các bước tương tự như trong Ví dụ Hello World. −

Bước Miêu tả
1 Bạn sử dụng Android StudioIDE để tạo một ứng dụng Android với tên MyFragments dưới một package com.example.myfragments
2 Sửa đổi MainActivity.java . Ở đây, chúng ta sẽ kiểm tra chế độ (Landscape và Portrait) của thiết bị, từ đó chúng ta sẽ tương ứng chuyển đổi giữa các Fragment khác nhau
3 Tạo 2 java là PM_Fragment.javaLM_Fragement.javadưới một package com.example.myfragments để định nghĩa hai Fragment và các phương thức gắn kết với chúng
4 Tạo res/layout/lm_fragment.xmlres/layout/pm_fragment.xml và định nghĩa layout tương ứng cho cả hai Fragment
5 Sửa đổi nội dung mặc định của res/layout/activity_main.xml file để bao cả hai Fragment
6 Định nghĩa các hằng cần thiết trong res/values/strings.xml file
7 Chạy ứng dụng để chạy Android Emulator và kiểm tra kết quả các thay đổi đã được thực hiện trong ứng dụng

Sau đây là nội dung của src/com.example.mycontentprovider/MainActivity.java đã được sửa đổi: −

package com.example.myfragments;

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

public class MainActivity extends Activity {

   @Override
   protected 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_Fragment ls_fragment = new LM_Fragment();
         fragmentTransaction.replace(android.R.id.content, ls_fragment);
      }else{
         /**
         * Portrait mode of the device
         */
         PM_Fragment pm_fragment = new PM_Fragment();
         fragmentTransaction.replace(android.R.id.content, pm_fragment);
      }
      fragmentTransaction.commit();
   }
}

Tạo 2 file là LM_Fragement.javaPM_Fragment.java dưới package là com.example.mycontentprovider

Sau đây là nội dung của LM_Fragement.java file −

package com.example.myfragments;

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


public class LM_Fragment 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);
   }
}

Sau đây là nội dung của PM_Fragement.java file −

package com.example.myfragments;

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


public class PM_Fragment 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);
   }
}

Tạo 2 layout files là lm_fragement.xmlpm_fragment.xmldưới thư mục res/layout .

Sau đây là nội dung của lm_fragement.xml file −

<?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>

Còn đây là nội dung của pm_fragment.xml file −

<?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>

Tiếp theo, nội dung của res/layout/activity_main.xml để bao các Fragment của bạn: −

<?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>

Đảm bảo bạn có nội dung sau của res/values/strings.xml file −

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">MyFragments</string>
   <string name="action_settings">Settings</string>
   <string name="hello_world">Hello world!</string>
   <string name="landscape_message">This is Landscape mode fragment</string>
   <string name="portrait_message">This is Portrait mode fragment></string>
</resources>

Bây giờ, chạy ứng dụng MyFragments đã sửa đổi trên. Giả sử bạn đã tạo AVD trong khi cài đặt. Để chạy ứng dụng từ Android Studio, mở activity file và nhấn biểu tượng Run từ thanh công cụ. −

Android Fragment

Để thay đổi chế độ trong màn hình mô phỏng, bạn thực hiện: −

  • Nhấn tổ hợp fn+control+F11 trên Mac để thay đổi từ Landscape sang Portrait và ngược lại.

  • Trên Windows là ctrl+F11.

  • Trên Linux là ctrl+F11

Khi bạn đã thay đổi chế độ, bạn có thể thấy GUI bạn đã triển khai cho chế độ Landscape như sau: −

Android Fragment

Theo cách này, bạn có thể sử dụng cùng Activity nhưng với GUI khác nhau thông qua Fragment khác nhau. Bạn có thể sử dụng các kiểu thành phần GUI khác nhau tùy theo yêu cầu của bạn.

Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.

Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:

Các bạn có thể mua thêm khóa học JAVA CORE ONLINE VÀ ỨNG DỤNG cực hay, giúp các bạn vượt qua các dự án trên trường và đi thực tập Java. Khóa học có giá chỉ 300K, nhằm ưu đãi, tạo điều kiện cho sinh viên cho thể mua khóa học.

Nội dung khóa học gồm 16 chuơng và 100 video cực hay, học trực tiếp tại https://www.udemy.com/tu-tin-di-lam-voi-kien-thuc-ve-java-core-toan-tap/ Bạn nào có nhu cầu mua, inbox trực tiếp a Tuyền, cựu sinh viên Bách Khoa K53, fb: https://www.facebook.com/tuyen.vietjack

Follow facebook cá nhân Nguyễn Thanh Tuyền https://www.facebook.com/tuyen.vietjack để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.


fragment_trong_android.jsp


Tài liệu giáo viên