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

교체하는 코드는 다음과 같다.


FragmentManager fragmentManager =
                                       getFragmentManager();
FragmentTransaction fragTransaction = 

                          fragManager.beginTransaction();
MyFragment mFrag = new MyFragment();

fragTransaction.add(R.id.layout, mFrag);

//아래 코드 실행되는 시점에 

//MyFragment가 비로소 실행된다.

fragTransaction.commit(); 



☞ 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();



+ Recent posts