[5] Fragment 로 다이나믹 UI 만들기 [1] Fragment 만들기

THIS LESSON TEACHES YOU TO

  1. Create a Fragment Class
  2. Add a Fragment to an Activity using XML

YOU SHOULD ALSO READ

TRY IT OUT

Download the sample

FragmentBasics.zip


You can think of a fragment as a modular section of an activity, which has its own lifecycle, receives its own input events, and which you can add or remove while the activity is running (sort of like a “sub activity” that you can reuse in different activities). This lesson shows how to extend the Fragment class using theSupport Library so your app remains compatible with devices running system versions as low as Android 1.6.

a fragment 를 액티비티의 모듈부분이라고 생각해도 됩니다. 각각은 각각의 라이프사이클이 있지요. 이 것들은 그들 나름의 입력 이벤트를 받습니다. 우리가 액티비티가 돌아가고 있는 도중에 더하고 뺄 수 있습니다 (일종의 서브 액티비티라고 보시면 됩니다.). 이번 시간에는 어떻게 Fragment 클래스를 서포트 라이브러리를 사용해서 상속하는지 알아봅니다. 그래야 안드로이드 1.6 이상을 지원할 수 있습니다.

Note: If you decide that the minimum API level your app requires is 11 or higher, you don’t need to use the Support Library and can instead use the framework’s built in Fragmentclass and related APIs. Just be aware that this lesson is focused on using the APIs from the Support Library, which use a specific package signature and sometimes slightly different API names than the versions included in the platform.

주의 : 만약 최소 API레벨을 11 이상으로 했다면, 서포트 라이브러리를 사용할 필요가 없습니다. 대신 그냥 내장된 Fragment 클래스를 사용하면 되지요.  이번 레슨은 서포트 라이브러리 API를 사용하는 것에 초점이 맞춰져 있습니다. 플래폼에 포함된 버전과 약간 다를 수 있습니다.

Before you begin this lesson, you must set up your Android project to use the Support Library. If you have not used the Support Library before, set up your project to use the v4 library by following the Support Library Setup document. However, you can also include the action bar in your activities by instead using the v7 appcompat library, which is compatible with Android 2.1 (API level 7) and also includes the Fragment APIs.

이 레슨을 시작하기 전에, 반드시 안드로이드 프로젝트를 서포트 라이브러리를 사용해서 셋업해야 합니다. 만약 서포트라이브러리를 사용한 적이 없었다면, 프로젝트를 v4 라이브러리를 사용해서 셋업 하세요 (링크 :Support Library Setup).  또는  v7 appcompat 라이브러리를 사용해서 액션 바를 액티비티에 포함할 수 있습니다. 이 것은 안드로이드 2.1 (API level 7)과 호환됩니다. 그리고 이 것은 Fragment API를 포함하고 있지요.

이 블로그에서 따라왔던대로 하면 v7 은 깔린겁니다. ^^

Fragment Class 생성하기 – Create a Fragment Class


To create a fragment, extend the Fragment class, then override key lifecycle methods to insert your app logic, similar to the way you would with an Activity class.

fragment 를 생성하기 위해서, Fragment 클래스를 상속합니다. 그리고, 중요한 라이프사이클 메소드를 우리 앱 로직에 삽입하는 메서드를, 오버라이드 합니다.

One difference when creating a Fragment is that you must use the onCreateView() callback to define the layout. In fact, this is the only callback you need in order to get a fragment running. For example, here’s a simple fragment that specifies its own layout:

Fragment 를 생성할 때 하나의 차이점은, 레이아웃을 선언할 때 반드시 onCreateView() 콜백을 사용해야 한다는 것입니다. 사실, 이 것은 단지 우리가  구동하는 fragment를 얻기 위해 필요한 콜백입니다. 예를 들어 레이아웃에 명시된 fragment 를 설명해 놓았습니다.

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.ViewGroup;

public class ArticleFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.article_view, container, false);
    }
}

Just like an activity, a fragment should implement other lifecycle callbacks that allow you to manage its state as it is added or removed from the activity and as the activity transitions between its lifecycle states. For instance, when the activity’s onPause() method is called, any fragments in the activity also receive a call to onPause().

액티비티처럼,

a fragment should implement other lifecycle callbacks
that allow you to manage its state
as it is added or removed from the activity and
as the activity transitions between its lifecycle states.

액티비티처럼, fragment 는 라이프사이클 콜백을 구현해야만 합니다.
그 라이프사이클 콜백들은 우리가 이것들의 상태를 관리할 수 있게 해 주는데요, 액티비티로부터 추가 및 제거 그리고
액티비티의 라이프사이클 상태 변화 같은 것을 한답니다. 좀 더 공부하고 수정할게요 . 모참인(모르는 것을 참는 인내) 발휘하겠습니다

More information about the fragment lifecycle and callback methods is available in the Fragments developer guide.

좀 더 자세한 정보는 Fragments 가이드를 참고하세요.

XML을 사용해서 Fragment를 액티비티에 추가하기 –  Add a Fragment to an Activity using XML


While fragments are reusable, modular UI components, each instance of a Fragment class must be associated with a parent FragmentActivity. You can achieve this association by defining each fragment within your activity layout XML file.

fragment 가 재사용되는 동안, 모듈식의 UI 컴포넌트들, 각각의 Fragment 클래스의 인스턴스들은 반드시 부모 FragmentActivity과 엮여야 합니다. 우리는 각각의 fragment를정의함으로써 엮이는 것을 해야합니다.

Note: FragmentActivity is a special activity provided in the Support Library to handle fragments on system versions older than API level 11. If the lowest system version you support is API level 11 or higher, then you can use a regular Activity.

주의 : FragmentActivity 는 특별한 액티비티입니다. 이 것은 서포트라이브러리에서 제공이 됩니다. fragment들을 다루는 데에 필요하지요. 만약 시스템 버전이 11버전보다 높다면 그냥 Activity 사용하면 됩니다.

Here is an example layout file that adds two fragments to an activity when the device screen is considered “large” (specified by the large qualifier in the directory name).

예제 레이아웃 파일이 있습니다. 디바이스 스크린이 “large” 로 간주될 때 두 fragment 를 액티비티에 추가합니다.

res/layout-large/news_articles.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <fragment android:name="com.example.android.fragments.HeadlinesFragment"
              android:id="@+id/headlines_fragment"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

    <fragment android:name="com.example.android.fragments.ArticleFragment"
              android:id="@+id/article_fragment"
              android:layout_weight="2"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

</LinearLayout>

Tip: For more about creating layouts for different screen sizes, read Supporting Different Screen Sizes.

Then apply the layout to your activity:

그리고 레이아웃을 액티비티에 적용합니다.

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.news_articles);
    }
}

If you’re using the v7 appcompat library, your activity should instead extend ActionBarActivity, which is a subclass of FragmentActivity (for more information, read Adding the Action Bar).

만약 우리가 v7 appcompat library를 사용한다면, 우리의 액티비티는 ActionBarActivity 를 상속한 것을 대신 써야합니다. 이 것은 FragmentActivity의 하위클래스입니다.

Note: When you add a fragment to an activity layout by defining the fragment in the layout XML file, you cannotremove the fragment at runtime. If you plan to swap your fragments in and out during user interaction, you must add the fragment to the activity when the activity first starts, as shown in the next lesson.

주의 : XML 파일안에 fragment를 정의해서, 우리가 액티비티 레이아웃에 fragment 를 추가할 때, 우리는 fragment를 런타임에 제거할 수 없습니다. 만약 우리가 fragment를 유저 인터렉션중에 안에서 밖으로 바꿀 계획이라면, 우리는 반드시 fragment 를 액티비티에 추가해야합니다. 액티비티가 첨 시작할때, 다음 레슨에서 보시죠.

진짜 이거 엉망이다!!!!! 절대 참고하지 마세요 이 페이지는!!


답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중