Android에서 Fragment는 무조건 Java Code로 FragmentTransaction을 통해 띄우는 건 줄 알았는데,
간단히 XML만으로도 띄울 수 있는 방법을 알게 되어 간단히 적어 본다.
public class DetailsFragment extends Fragment {
@BindView(R.id.tv_title) TextView mTvTitle;
public DetailsFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_details, container, false);
ButterKnife.bind(this, root);
return root;
}
}
fragment_details.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:orientation="horizontal"
tools:context="com.youknow.MainActivity">
<fragment
android:name="com.youknow.DetailsFragment"
android:id="@+id/details_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
이렇게만 해주면, 자동으로 DetailsFragment가 MainActivity에 attach되어 동작하게 된다.
단 MainActivity는 FragmentActivity를 상속받아 구현한 Activity이어야 한다.
FragmentActivity의 서브 클래스인 AppCompatActivity도 가능하다.
fragment 태그의 name 속성에 우리가 띄우고자 하는 Fragment Class를 지정했는데,
Android Framework은 name 속성에 지정한 class를 찾아 인스턴스화하여 해당 위치에 attach한다.
간단히 XML만으로도 띄울 수 있는 방법을 알게 되어 간단히 적어 본다.
1. Fragment를 상속받는 Class를 정의한다.
public class DetailsFragment extends Fragment {
@BindView(R.id.tv_title) TextView mTvTitle;
public DetailsFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_details, container, false);
ButterKnife.bind(this, root);
return root;
}
}
fragment_details.xml 은 생략한다.
2. 위에서 정의한 DetailsFragment를 적재할 MainActivity의 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:orientation="horizontal"
tools:context="com.youknow.MainActivity">
<fragment
android:name="com.youknow.DetailsFragment"
android:id="@+id/details_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
이렇게만 해주면, 자동으로 DetailsFragment가 MainActivity에 attach되어 동작하게 된다.
단 MainActivity는 FragmentActivity를 상속받아 구현한 Activity이어야 한다.
FragmentActivity의 서브 클래스인 AppCompatActivity도 가능하다.
fragment 태그의 name 속성에 우리가 띄우고자 하는 Fragment Class를 지정했는데,
Android Framework은 name 속성에 지정한 class를 찾아 인스턴스화하여 해당 위치에 attach한다.
댓글
댓글 쓰기