我开始处理片段并遇到问题。我有文件查看片段(不止一个)和搜索片段。为了使事情变得容易,我每次搜索时都将文件查看片段添加到后向堆栈中,以便在决定关闭文件时可以轻松地将其弹出。现在的问题是,当我按搜索片段中的文件以便转到该文件所在的特定片段时,即使我替换了它,第一个片段(位于后堆栈中)的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();
}
即使我不清除后退堆栈,问题仍然存在。感谢您的事先答复。
答案 0 :(得分:0)
答案很简单-我应该只使用getActivity()。getSupportFragmentManager()。popBackStackImmediate();退出搜索视图时,较早的方法不起作用,因为它等待程序返回其事件循环(异步)。