- vừa được xem lúc

Sử dụng Fragment trong Android

0 0 13

Người đăng: Tran Van Tuan B

Theo Viblo Asia

Hello everyone, mình sẽ chia sẻ với các bạn cách sử dụng fragment trong android. Nó là một thành phần quan trọng. Nó khá giống activity. Hôm nay mình đi vào phần 1 static fragment, phần 2 dynamics fragment mình sẽ chia sẻ vào bài viết lần sau. Giờ chúng ta cùng tìm hiểu nhé.

1. Một số khái niệm cơ bản

  • Trong các ứng dụng android, tại một thời điểm, chỉ có một Activity được hiển thị duy nhất trên màn hình. Chúng ta muốn chia màn hình ra nhiều phần để dễ sử dụng thì fragment đáp ứng điều đó
  • Fragment là một thành phần android độc lập, được sử dụng bởi một activity, giống như một sub-activity. Fragment có vòng đời và UI riêng. Các Fragment thường có một file java đi kèm với file giao diện xml. Các fragment không có file giao diện xml thường được gọi là headless fragments.
  • Fragment sử dụng method getActivity() để lấy ra Activity bố
  • Fragment được định nghĩa trong file xml của activity (static definition) hoặc có thể sửa đổi fragment khi đang chạy (dynamic definition)

2. Fragment life cycle - vòng đời của 1 fragment onAttach(): hàm này thực hiện tạo tham chiếu từ một fragment đến activity đã khởi tạo nó, và thực hiện một số bước trong quá trình khởi tạo

onCreate(): thực hiện khởi tạo fragment

onCreateView(): thực hiện tạo giao diện(view), trả về view là giao diện file xml tương ứng fragment. ko nên tương tác với activity trong hàm này bởi vì activity chưa được khởi tạo đầy đủ. Không cần thực hiện hàm này với các fragment không có header

onActivityCreated(): thực hiện hoàn thành nốt việc khởi tạo activity và fragment. Trong bước này chúng ta có thể gọi findViewById()

onStart(): thực hiện việc hiển thị fragment lên màn hình

onResume(): fragment chính thức hoạt động hoàn toàn

onPause(): fragment bị tạm dừng hoạt động, nó vẫn có thể được nhìn thấy

onStop(): fragment bị ẩn

onDestroyView(): giao diện(view) của fragment bị hủy. Nếu nó được gọi quay lại, nó sẽ quay trở lại thực hiện hàm onCreateView()

onDestroy(): bị hủy

onDetach(): bị hủy hoàn toàn

3. Static Fragment Static Fragment là kiểu fragment được khai báo (định nghĩa) trực tiếp trong file activity_main.xml Ví dụ ta có 2 static fragment là Fragment1.java(fragment1.xml)Fragment2.java(fragment2.xml) Trong file activity_main.xml khai báo tĩnh:

<fragment android:id="@+id/listFragment" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" class="com.example.android.fragment1.MyFragment1" tools:layout="@layout/fragment1">
</fragment>

Chú ý: Bắt buộc phải có thuộc tính android:id. Nếu không sẽ gây lỗi. Hai class Fragment1.javaFragment2.java phải extends Fragment Và phải ghi đè phương thức onCreateView():

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View view = inflater.inflate(R.layout.fragment1, container, false); return view;
}

Example:


MainActivity.java

package com.example.tuantv6.fragmentdemo; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_activity); }
}

Fragment1

package com.example.tuantv6.fragmentdemo; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; public class Fragment1 extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View view = inflater.inflate(R.layout.fragment1, container, false); return view; }
}

Fragment2

package com.example.tuantv6.fragmentdemo; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup; public class Fragment2 extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); View view = inflater.inflate(R.layout.fragment2, container, false); return view; }
}

fragment1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:background="#FF0000" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="fragment 1" android:textSize="30dp" android:layout_gravity="center" />
</LinearLayout>

fragment2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:background="#AA0099" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="fragment 2" android:textSize="30dp" android:layout_gravity="center" />
</LinearLayout>

mainactivity.xml

<?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:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/listFragment" class="com.example.haitm.fragmentdemo.MyFragment1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" tools:layout="@layout/fragment1"> </fragment> <fragment android:id="@+id/detailFragment" class="com.example.haitm.fragmentdemo.MyFragment2" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" tools:layout="@layout/fragment2"> </fragment> </LinearLayout>

Kết quả


Trên đây là hướng dẫn cơ bản về sử dụng static fragment, các bạn cùng chờ đón phần 2 về dynamic fragment trong bài viết tiếp theo của mình nhé. ? Refer link: http://www.vogella.com/tutorials/AndroidFragments/article.html

Bình luận

Bài viết tương tự

- vừa được xem lúc

Giới thiệu Typescript - Sự khác nhau giữa Typescript và Javascript

Typescript là gì. TypeScript là một ngôn ngữ giúp cung cấp quy mô lớn hơn so với JavaScript.

0 0 528

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 407

- vừa được xem lúc

Đặt tên commit message sao cho "tình nghĩa anh em chắc chắn bền lâu"????

. Lời mở đầu. .

1 1 772

- vừa được xem lúc

Tìm hiểu về Resource Controller trong Laravel

Giới thiệu. Trong laravel, việc sử dụng các route post, get, group để gọi đến 1 action của Controller đã là quá quen đối với các bạn sử dụng framework này.

0 0 368

- vừa được xem lúc

Phân quyền đơn giản với package Laravel permission

Như các bạn đã biết, phân quyền trong một ứng dụng là một phần không thể thiếu trong việc phát triển phần mềm, dù đó là ứng dụng web hay là mobile. Vậy nên, hôm nay mình sẽ giới thiệu một package có thể giúp các bạn phân quyền nhanh và đơn giản trong một website được viết bằng PHP với framework là L

0 0 460

- vừa được xem lúc

Bạn đã biết các tips này khi làm việc với chuỗi trong JavaScript chưa ?

Hi xin chào các bạn, tiếp tục chuỗi chủ đề về cái thằng JavaScript này, hôm nay mình sẽ giới thiệu cho các bạn một số thủ thuật hay ho khi làm việc với chuỗi trong JavaScript có thể bạn đã hoặc chưa từng dùng. Cụ thể như nào thì hãy cùng mình tìm hiểu trong bài viết này nhé (go).

0 0 436