android------addToBackStack 무작용 문제

오늘 Fragment에 대한 데모를 썼는데 일부 코드는 다음과 같습니다.
@Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.button:
                AnotherRightFragment anotherRightFragment=new AnotherRightFragment();
                FragmentManager manager=getFragmentManager();
                FragmentTransaction fragmentTransaction=manager.beginTransaction();
                fragmentTransaction.replace(R.id.right_fragment,anotherRightFragment);
                fragmentTransaction.addToBackStack(null);
                fragmentTransaction.commit();
                break;
        }
    }

그러나 실행할 때 Back 키를 눌렀을 때 이전 페이지로 돌아가지 않았습니다. 코드에 분명히
fragmentTransaction.addToBackStack(null);

그러나 이전 페이지로 돌아가지 않았기 때문에ddToBackStack이 작용하지 않았음을 알 수 있다.인터넷에서 검색해 보니 다음과 같습니다.
Activity가 Activity 클래스를 계승하면addToBackStack(null)은 반환을 누르면 이전 Fragment로 물러나지만 AppCompatActivity 클래스를 계승하면 반환을 누르면 이전 Activity로 바로 물러납니다.
저의Activity는 계승된 AppCompatActivity이기 때문에ddToBackStack이 작용하지 않았습니다.해결 방법은 다음과 같은 코드를 추가할 수 있습니다.
@Override
    public void onBackPressed() {
        if (getFragmentManager().getBackStackEntryCount() > 0 ){
            getFragmentManager().popBackStack();
        } else {
            super.onBackPressed();
        }
    }

위의 코드는 백 키를 눌렀을 때 Fragment가 있는지 확인하고 있으면 튀어나오고 없으면 바로 종료하는 것이다.

좋은 웹페이지 즐겨찾기