addToBackStack 没有导航回正确的片段

Posted

技术标签:

【中文标题】addToBackStack 没有导航回正确的片段【英文标题】:addToBackStack is not navigating back to the correct fragment 【发布时间】:2021-09-19 12:36:15 【问题描述】:

你好,我试图在 EditProfile Fragment 中包含一个 backstack,当按下 back 时它会返回到 Profile Fragment 但它会返回到 Home Fragment

如果您想要更多参考代码,请告诉我,我会更新 完整代码的问题

个人资料片段

editProfileButton = relativeLayout.findViewById(R.id.edit_profile_button); // buuton to start editprofile fragment 
        editProfileButton.setOnClickListener(v -> 
            Fragment edit_profile = new Edit_Profile();
            FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
            transaction.replace(R.id.fragment_container, edit_profile);
            transaction.addToBackStack(String.valueOf(new Profile_Fragment())); // i thinked this method of implementing string.valueof will navigate back to the given fragment but as you know it is not working
            transaction.commit();
        );

【问题讨论】:

【参考方案1】:

我在this 博文中找到了一个很好的解释。您可以尝试此代码并阅读更多相关信息。

public void addSubscreen(Fragment fragment) 
    getSupportManager()
        .beginTransaction()
        .replace(R.id.container, fragment)
        .addToBackStack(null)
        .commit();
    subscreensOnTheStack++;



public void popOffSubscreens() 
    while (subscreensOnTheStack > 0) 
        fragments.popBackStackImmediate();
    

【讨论】:

以上是关于addToBackStack 没有导航回正确的片段的主要内容,如果未能解决你的问题,请参考以下文章

防止同一片段多次堆叠 (addToBackStack)

片段 addToBackStack() 和 popBackStackImmediate() 不起作用

android fragment addToBackStack(null):如何将同一个片段添加到堆栈中一次?

当我导航回片段时,片段的内容消失了

BackStack 没有导航到正确的 Fragment

如何保存具有列表视图的片段状态