FragmentTransaction의 replace() 메소드를 통해 동적으로 Fragment 교체하기
교체하는 코드는 다음과 같다.
교체하는 코드는 다음과 같다.
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragTransaction = fragManager.beginTransaction();
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();
댓글 없음:
댓글 쓰기