2015년 10월 21일 수요일

FragmentTransaction의 replace() 메소드를 통해 동적으로 Fragment 교체하기





FragmentTransaction의 replace() 메소드를 통해 동적으로 Fragment 교체하기
교체하는 코드는 다음과 같다.

FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragTransaction = fragManager.beginTransaction();
MyFragment mFrag = new MyFragment();
fragTransaction.add(R.id.layout, mFrag);
fragTransaction.commit(); //이 코드 실행되는 시점에 MyFragment가 비로소 실행된다.


☞ FragmentManager
⇒ Activity안에 있는 Fragment와 상호 작용 및 관리(Activity에 추가, 교체...)를 위한 클래스
이 클래스의 객체는 Activity의 메소드 중 getFragmentManager()를 통해 얻을 수 있다.

☞ fragTransaction.add(R.id.layout, mFrag);
⇒ 새로운 Fragment인 mFrag를 R.id.layout이라는 곳에 추가하는 기능.
R.id.layout이 들어있는 xml파일이 다음과 같다면

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/layout"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btn"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="확 인"
        android:onClick="mClick"
        />
</LinearLayout>


fragTransaction.add(R.id.layout, mFrag)과 유사한 것이 replace() 메소드이다.
아래 코드는 R.id.content_frame에 있는 기존의 Fragment를 제거한 후 
두 번째 매개인자인 fragment를 R.id.content_frame에 집어 넣는 기능이다.

fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

댓글 없음:

댓글 쓰기