같은 프래그먼트가 중복되지 않게 addToBackStack에 어떻게 쌓나요?

조회수 1977회
public class MainActivity extends AppCompatActivity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.add(R.id.a_main_layout, MainFragment.getInstance());
        transaction.commit();
    }

    public void onClicked(View view) {
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();

        String backStackStr = "";
        switch (view.getId()) {
            case R.id.a_main_sub01_btn:
                backStackStr = "Sub01";
                break;
            case R.id.a_main_sub02_btn:
                backStackStr = "Sub02";
                break;
        }

        if(fragmentManager.findFragmentByTag(backStackStr) != null){
            fragmentManager.popBackStack(backStackStr, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        }

        if(backStackStr.equals("Sub01")) {
            transaction.replace(R.id.a_main_layout, Sub01Fragment.getInstance(), "Sub01");
        }else if(backStackStr.equals("Sub02")) {
            transaction.replace(R.id.a_main_layout, Sub02Fragment.getInstance(), "Sub02");
        }

        transaction.addToBackStack(backStackStr);
        transaction.commit();
    }
}
  • Main Sub01 Sub02 상태에서 Sub01이 추가되면
  • Main Sub02 Sub01 와 같이 되고 싶은데 안되네요...
  • 어떻게 해야 같은 프래그먼트가 중복 저장이 안되고 잘 될까요?
  • (•́ ✖ •̀)
    알 수 없는 사용자

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

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)