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 −


   
   
   

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


   
   
   

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


   
   
   

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



   MyFragments
   Settings
   Hello world!
   This is Landscape mode fragment
   This is Portrait mode fragment>

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.


fragment_trong_android.jsp