1. 프래그먼트 (Fragment)
프래그먼트를 이용하면 액티비티로 만든 화면 안에 부분화면을 독립적으로 사용할 수 있다.
프래그먼트는 액티비티가 동작하는 방식과 유사하게 프래그먼트를 위한 XML 레이아웃과 소스 파일이 한 쌍으로 만들어진다.
프래그먼트 객체를 필요할 때 액티비티에서 사용할 수 있어 독립적으로 사용할 수 있게 된다.
액티비티 위에 올라가도록 만들었기 때문에 액티비티가 시스템 역할을 하게 되고, 액티비티보다 가볍게 화면 구성을 할 수 있다.
하나의 액티비티에 하나의 프래그먼트를 전체화면으로 보여주면 시스템과 관계없이 전체화면을 전환하는 효과를 만들 수 있다.
액티비티가 따로 뜨는 것이 아니기 때문에 시스템에서 접근하지 않아 보안 면에서도 장점이 있다.
그러나 프래그먼트를 사용하면 코드가 복잡해지는 단점도 있다.
2. XML 레이아웃에 프래그먼트 추가하기
XML 레이아웃 파일을 만들고 그 파일을 소스 파일에 설정하려면
프래그먼트 안에 있는 onCreateView 메소드 안에서 Layout inflater를 이용해 인플레이션을 진행한다.
onCreateView 메소드는 자동으로 호출되는 메소드이며 파라미터로 LayoutInflater 객체를 전달해준다.
이 객체의 inflate 메소드를 이용해 인플레이션을 진행할 수 있다.
XML 레이아웃에 추가할 때는, <fragment> 태그를 사용하고 프래그먼트 클래스를 지정할 때는 name 속성을 사용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#aaaaad" android:padding="10dp"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Fragment 1" android:textSize="30sp" android:textAlignment="center"/> </LinearLayout> | cs |
FragmentActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package com.tistory.qlyh8.pracitice; 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 FragmentActivity extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_main, container, false); return rootView; } } | cs |
activity_main.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.tistory.qlyh8.pracitice.SmsActivity" android:orientation="vertical" android:padding="10dp" android:gravity="center"> <Button android:id="@+id/button" android:layout_width="250dp" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:layout_marginBottom="30dp" android:text="시작"/> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:id="@+id/fragment_main" android:name="com.tistory.qlyh8.pracitice.FragmentActivity" android:layout_width="match_parent" android:layout_height="match_parent"/> </FrameLayout> </LinearLayout> | cs |
참고
프래그먼트란? https://developer.android.com/guide/components/fragments?hl=ko
출처: https://www.edwith.org/boostcourse-android/lecture/17074/
'Android' 카테고리의 다른 글
프래그먼트 (Fragment) - 3. 다른 프래그먼트 호출하기 & 수명주기 (1) | 2018.06.29 |
---|---|
프래그먼트 (Fragment) - 2. java 소스코드에 프래그먼트 추가하기 (0) | 2018.06.29 |
워험권한 (Dangerous Permission) (0) | 2018.05.28 |
Broadcast Receiver (브로드캐스트 수신자) (0) | 2018.05.26 |
액티비티 구성요소 - 서비스 (Service) (0) | 2018.05.19 |