我正在学习Fragments,对于不同调用 FragmentTransaction.replace(id, fragment, tag)
和 FragmentTransaction.addToBackStack(tag)
之间的区别感到有些困惑。假设我的当前fragment是 FragmentA ,然后我加载了 FragmentB 。 我希望在将来需要加载 FragmentA 时,无需重新加载它,只需加载旧状态中的旧fragment。我使用了以下代码段:
public void loadFragment(Fragment fragmentB, String tag) {
FragmentManager fm = getSupportFragmentManager();
View fragmentContainer = findViewById(R.id.fragment_container);
FragmentTransaction ft = fm.beginTransaction();
ft.replace(fragmentContainer.getId(), fragmentB, tag);
ft.addToBackStack(tag);
ft.commit();
}
现在我有点困惑,应该在哪里添加字符串标签?是在replace()
里还是在addToBackStack()
里或者两个调用中都添加?你能解释一下这两个标签位置之间的区别吗?
TAG
传递以便在将其添加到返回栈时能够识别该片段:.addToBackStack(YourFragment.TAG);
这样,您可以使用以下方式检查 Fragment 是否已经存在于返回栈中:getFragmentManager().findFragmentByTag(YourFragment.TAG);
- Mazen Kasser