본문 바로가기

안드로이드

프레그 먼트 종료 방법

public class MenuFragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_menu, container, false);

        Button button = (Button)rootView.findViewById(R.id.button);
        button.setOnClickListener(buttonListener);

        return rootView;
    }

    View.OnClickListener buttonListener = new View.OnClickListener(){
        @Override
        public void onClick(View v) {
            Toast.makeText(getContext(), "메인 화면으로 가기 버튼 클릭", Toast.LENGTH_SHORT).show();
            //종료 안됨.
            //  --아래 2줄은 Fragment를 change해주는 소스임
            //  --MainActivity에 Fragment를 여러장 올려 놓고 서로 교체하는 소스임.
            //  --예url : http://blog.naver.com/ssy9137/220725822294
            //MainActivity activity = (MainActivity)getActivity();
            //activity.onFragmentChanged(-1);

            //getActivity().getFragmentManager().beginTransaction().remove(this).commit();  //this 오류 발생
            //getActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();  //this 오류 발생
            //getActivity().getSupportFragmentManager().popBackStack();  //종료 안됨
            //getActivity().getFragmentManager().popBackStack();  //종료 안됨
            //getFragmentManager().popBackStack(); //종료 안됨
            //getActivity().onBackPressed();  //아에 앱이 종료 됨. 즉 Main Activity 로 돌아가지 않음.
            //getActivity().finish();  //아에 앱이 종료 됨. 즉 Main Activity 로 돌아가지 않음.

            //종료 안됨.
            //FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
            //transaction.addToBackStack(null);

            //종료 잘 됨.
            //  아래 방식은 fragment를 종료하는 방법임
            //FragmentManager manager = getActivity().getSupportFragmentManager();
            //manager.beginTransaction().remove(MenuFragment.this).commit();
            //manager.popBackStack();

            //MainActivity.java 의 replace문법으로 fragment를 교체해 준다.
            MainActivity activity = (MainActivity) getActivity();
            activity.onFragmentChanged(1);
        }
    };
}



출처: https://farmerkyh.tistory.com/22 [농부지기]