[AndroidStudio] Fragment 간의 이동

강은서·2022년 4월 11일
0

AndroidStudio

목록 보기
2/2
post-thumbnail

이전에 포스팅한 하단 메뉴바를 만들기와 연관된 예제이다.

하단 메뉴바를 클릭시 Fragment를 이동하도록 만들었고, Fragment내에 있는 버튼을 통해서 다른 Fragment로 이동은 어떻게 해야할까? 고민하면서 찾아본 내용이다.

그 전에 Fragment에 대한 이해가 필요했다.

다음과 같은 Android Studio에서 제공한 문서를 보면, Fragment에 대한 이해를 조금은 할 수 있었다. Framgent는 하나의 Activity가 여러개의 화면을 가지도록 고안된 개념으로 다양한 크기의 화면을 가진 모바일 환경이 늘어남에 따라 하나의 디스플레이 안에서 다양한 화면 요소들을 보여주고 싶은 요구에 의해 생겼다.

프래그먼트는 자체 레이아웃을 정의 및 관리하고 자체 수명 주기를 보유하며 자체 입력 이벤트를 처리할 수 있습니다. 프래그먼트는 독립적으로 존재할 수 없고 활동이나 다른 프래그먼트에서 호스팅되어야 한다.

여기까지 간단하게 Fragment에 대해 이해했고, 앞으로 공부하면서 생명주기 등등 더 자세히 다뤄볼 생각이다.


나는 기존에 생성한 Monitoring Fragment에 버튼을 추가하여, 버튼을 누르면 Home Fragment에 이동하기를 구현하는 것을 목표로 하였다.

Fragment끼리 이동하기 위해서는 Activity 내 Fragment manager를 통해 이동하게 되며, Activity위에서 이동하기 때문에 intent가 아닌 메소드를 통해서 이동하게 된다.

  • Monitoring.Fragment
public class GalleryFragment extends Fragment {

    private View view;
    private ImageButton btn_goBack; //Home Fragment로 이동하는 버튼
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        view = inflater.inflate(R.layout.fragment_gallery, container, false);
        btn_goBack = view.findViewById(R.id.btn_goBack);
        btn_goBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
                HomeFragment homeFragment = new HomeFragment();
                //main_layout에 homeFragment로 transaction 한다.
                transaction.replace(R.id.main_layout, homeFragment);
                //꼭 commit을 해줘야 바뀐다.
                transaction.commit();
            }
        });
        return view;
    }
  • onCreateView
    Fragment에 쓰일 view들을 정의하고 초기화한다. 이 때, Fragment는 자신의 레이아웃을 루트 뷰로 설정하고 이를 inflate 하게 된다. container 를 통해 Fragmenet가 Activity의 어느 위치에 자리 잡아야 될지를 전달받는다. 마지막으로 Fragment에 생성된 뷰들을 종속된 Activity의 view(container) 에 리턴해 줌으로써 화면에 표시하게 된다.

0개의 댓글