안드로이드 Fragment 사이에서 BackButton을 눌렀을 때 이전 Fragment로 돌아가려면?

조회수 5791회

안녕하세요. PlaceActivity에서 InformationFragment와 UserInputFragment를 전환할 수 있도록 코드를 작성하고 있습니다. 기본적으로 PlaceActivity는 InformationFragment를 보여줍니다.


        InformationFragment informationFragment = InformationFragment.newInstance(placeId);
        openFragment(informationFragment);

...

    private void openFragment(final Fragment fragment) {
        FragmentManager fm = getFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fragment_container, fragment);
        ft.commit();
    }

InformationFragment에서 버튼을 클릭하면 UserInputFragment로 전환하는 코드입니다.

        Button userInput = (Button)v.findViewById(R.id.btn_usr_input);
        userInput.setOnClickListener(new Button.OnClickListener() {

            @Override
            public void onClick(View v) {
                InputFragment inputFragment = InputFragment.newInstance(id);
                openFragment(inputFragment);
            }
        });

        return v;
    }

    private void openFragment(final Fragment fragment) {
        FragmentManager fm = getFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fragment_container, fragment);
        ft.commit();
    }

사용자 입력이 끝난후 버튼을 클릭하면 다시 InformationFragment로 돌아갑니다. UserInputFragment에 구현된 코드는 다음과 같습니다.

       submitBT.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View v) {
                String date = dateET.getText().toString();
                String score = String.valueOf(ratingRB.getRating());
                String userInput = opinionET.getText().toString();

                if (selectedImage == null) {
                    placeDAO.updatePlace(id, 1, date, score, userInput, null);
                } else {
                    placeDAO.updatePlace(id, 1, date, score, userInput, selectedImage.toString());
                }
                // DB 업데이트

                InformationFragment informationFragment = InformationFragment.newInstance(id);
                openFragment(informationFragment);
            }
        });

        return v;
    }

    private void openFragment(final Fragment fragment) {
        FragmentManager fm = getFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        ft.replace(R.id.fragment_container, fragment);
        ft.commit();
    }

이렇게 해서 입력 버튼을 누르면 다시 InformationFragment로 전환됩니다. 문제는 BackButton을 눌렀을때인데 이전 Fragment로 되돌아가는 게 아니라 Activity를 종료해서 이전 Activity로 되돌아가버립니다. BackButton을 눌렀을 때 이전 Fragment로 되돌아갈 수 있는 방법이 없을까요?

1 답변

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.