繁体   English   中英

Android 片段导航,返回到backstack中的特定片段

[英]Android fragments navigation, going back to a specific fragments in the backstack

在我们个人的 API 中,我们可以解析文件夹树(不是设备中的那个,而是我们从 web 服务获得的)。 所以我们在片段中显示每个文件夹级别及其内容。 然后,如果用户 select 是一个文件夹,我们将显示相同的片段,但有另一个内容。 我们称这个片段BrowseFragment

我们正在尝试将 go 回到特定级别的文件夹树中。 例如,从5级到2级,它不起作用:有时会出现空白屏幕,有时会出现错误的屏幕。 然而,backstack 似乎很好,因为当用户使用 android 后退按钮返回上一级时,一切都很好。

所以这是我们点击几下后的backstack:

浏览片段#1

浏览片段#4

浏览片段#14

浏览片段#47

浏览片段#72

下面是我们如何替换片段:

public void onSelectFolder(Folder folderSelected) {

    // Getting transaction
    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    BrowseFragment browseFragment = new BrowseFragment();

    // Adding bundle
    Bundle bundle = new Bundle();
    bundle.putSerializable(Constants.FRAGMENT_ARG_BROWSED_FOLDER_TREE, (Serializable)this.foldersBrowsed);
    browseFragment.setArguments(bundle);

    // Replacing fragment
    ft.replace(R.id.fragment_container, browseFragment, Constants.FRAGMENT_KEY_BROWSE + folderSelected.getIdFolder());
    ft.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_from_left);
    ft.addToBackStack(Constants.FRAGMENT_KEY_BROWSE + folderSelected.getIdFolder()); // Example: "browseFragment#1", "browseFragment#12" etc...
    ft.commit();
}

以下是我们如何回到特定级别:

public void onSelectFolderFromBreadCrumb(Folder folderSelected) {

    // Going back in the backstack
    getSupportFragmentManager().popBackStack(Constants.FRAGMENT_KEY_BROWSE + folderSelected.getIdFolder(), 0); // Example: "browseFragment#1", "browseFragment#12" etc...
}

有什么问题吗? 谢谢!

试试这个getSupportFragmentManager().popBackStack(Constants.FRAGMENT_KEY_BROWSE + folderSelected.getIdFolder(), POP_BACK_STACK_INCLUSIVE); 我遇到了像你这样的问题,并在阅读了这篇博文后设法解决了它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM