Program Club

백 스택에서 조각을 꺼내는 방법

proclub 2020. 11. 17. 21:16
반응형

백 스택에서 조각을 꺼내는 방법


조각 Cf를 호출하는 조각 Bf를 호출하는 활동 A가 있습니다. 사용자가 다시 탐색 할 수 있도록 Cf가 호출 될 때 Bf를 백 스택에 배치하고 싶습니다. 그러나 Cf에서 특정 버튼을 누르면 Bf를 백 스택에서 제거하고 싶습니다. 이것이 가능한가?

popBackStack () 함수가 있음을 알았습니다. 그러나 이것이 어떻게 작동하는지 약간 혼란 스럽습니다. 이 기능을 사용해도 안전합니까? 다른 응용 프로그램의 활동이 백 스택의 Bf 뒤에 삽입 될 가능성이 있습니까?

또한 백 스택에서 조각의 savedInstanceState를 변경할 수있는 방법이 있습니까?

에뮬레이터를 사용하여 백 스택에서 강력한 테스트를 수행하는 방법을 알 수 없습니다.


조각을 이름으로 팝할 수 있습니다. 백 스택에 조각을 추가하는 동안 이름 만 지정하면됩니다.

fragmentTransaction.addToBackStack("fragB");
fragmentTransaction.addToBackStack("fragC");

그런 다음 Fragment_C에서 ie ..라는 이름을 사용하여 백 스택을 팝 fragB하고 다음을 포함합니다.POP_BACK_STACK_INCLUSIVE

someButtonInC.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        FragmentManager fm = getActivity()
                .getSupportFragmentManager();
        fm.popBackStack ("fragB", FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }
});

BackStack에서 조각을 팝하는 세 가지 방법

이 줄을 추가하기 만하면됩니다.

1. getActivity().getSupportFragmentManager().popBackStack();

2. getActivity().getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

3. getActivity().getSupportFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);

백 스택에서 조각을 꺼내는 가장 쉬운 방법


먼저 "Later Transaction"과 같이 이름을 추가 할 때 container_view 조각을 대체합니다.

   getSupportFragmentManager().beginTransaction().replace(R.id.container_view, 
    profileFragment, "Profile").addToBackStack("Later Transaction").commit();

그런 다음 뒤로 버튼을 누르면 나중에 트랜잭션 이름을 사용하여 백 스택을 팝합니다.

     int count = getSupportFragmentManager().getBackStackEntryCount();
    if(count > 1) {
     getSupportFragmentManager().popBackStack("Later Transaction", 
     FragmentManager.POP_BACK_STACK_INCLUSIVE);
    } else {
        DialogUtils.show(HomeActivity.this, 
        getString(R.string.exit_app_message), getString(R.string.alert), 
       "Yes","No", new DialogUtils.ActionListner() {
            @Override
            public void onPositiveAction() {
                finish();
            }
            @Override
            public void onNegativeAction() {
            }
        });
    }

참고 URL : https://stackoverflow.com/questions/14971780/how-to-pop-fragment-off-backstack

반응형