1. 프래그먼트 (Fragment)


프래그먼트를 이용하면 액티비티로 만든 화면 안에 부분화면을 독립적으로 사용할 수 있다.


프래그먼트는 액티비티가 동작하는 방식과 유사하게 프래그먼트를 위한 XML 레이아웃과 소스 파일이 한 쌍으로 만들어진다. 

프래그먼트 객체를 필요할 때 액티비티에서 사용할 수 있어 독립적으로 사용할 수 있게 된다.


액티비티 위에 올라가도록 만들었기 때문에 액티비티가 시스템 역할을 하게 되고, 액티비티보다 가볍게 화면 구성을 할 수 있다.

하나의 액티비티에 하나의 프래그먼트를 전체화면으로 보여주면 시스템과 관계없이 전체화면을 전환하는 효과를 만들 수 있다.

액티비티가 따로 뜨는 것이 아니기 때문에 시스템에서 접근하지 않아 보안 면에서도 장점이 있다.

그러나 프래그먼트를 사용하면 코드가 복잡해지는 단점도 있다.



2. XML 레이아웃에 프래그먼트 추가하기


XML 레이아웃 파일을 만들고 그 파일을 소스 파일에 설정하려면 

프래그먼트 안에 있는 onCreateView 메소드 안에서 Layout inflater를 이용해 인플레이션을 진행한다.


onCreateView 메소드는 자동으로 호출되는 메소드이며 파라미터로 LayoutInflater 객체를 전달해준다.

이 객체의 inflate 메소드를 이용해 인플레이션을 진행할 수 있다.

XML 레이아웃에 추가할 때는, <fragment> 태그를 사용하고 프래그먼트 클래스를 지정할 때는 name 속성을 사용한다.



실행 결과 화면



Fragment_main.xml
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/

+ Recent posts