删除/替换碎片

时间:2018-10-15 11:39:03

标签: java android android-fragments

我开始处理片段并遇到问题。我有文件查看片段(不止一个)和搜索片段。为了使事情变得容易,我每次搜索时都将文件查看片段添加到后向堆栈中,以便在决定关闭文件时可以轻松地将其弹​​出。现在的问题是,当我按搜索片段中的文件以便转到该文件所在的特定片段时,即使我替换了它,第一个片段(位于后堆栈中)的onCreateView始终会被调用。 ),我不想要那样。这是我要更改按搜索文件片段的操作:

1。我打电话给pop以获得上一个片段

<span class="skype-button rectangle" data-contact-id="kanyewest" data-text="Imma Contact You">Contact</span>
<script src="https://swc.cdn.skype.com/sdk/v1/sdk.min.js"></script>

2。然后我替换剩下的片段

@Override
public boolean onSearchViewClose() {
    if (getActivity() != null) {
        getActivity().getSupportFragmentManager().popBackStack();
        return true;
    }
    return false;
}

在清理后退堆栈时:

public void setFragment(Fragment fragment, String tag, boolean clearBackStack, boolean addToBackStack) {
    // Insert the fragment by replacing any existing fragment
    hideLoadingProgress();
    FragmentManager fragmentManager = getSupportFragmentManager();
    if (clearBackStack) {
        clearBackStack(fragmentManager);
    }
    FragmentTransaction transaction = fragmentManager.beginTransaction().replace(R.id.content_frame, fragment, tag);
    if (addToBackStack) {
        transaction.addToBackStack(null);
    }
    transaction.commit();
}

即使我不清除后退堆栈,问题仍然存在。感谢您的事先答复。

1 个答案:

答案 0 :(得分:0)

答案很简单-我应该只使用getActivity()。getSupportFragmentManager()。popBackStackImmediate();退出搜索视图时,较早的方法不起作用,因为它等待程序返回其事件循环(异步)。