0

我有一段代码,我希望隐藏当前片段,这样它就不会破坏它的视图,然后使用它显示一个新的:

  FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.hide(oldFragment);
    ft.show(newFragment);
    ft.commit();

问题是当我执行上面的代码时,它没有显示任何 UI 组件。

如果我这样做ft.replace(id,fragment);了,但我不想删除以前显示的片段,因为我想维护片段及其视图,所以我不需要重新初始化它

4

2 回答 2

1

您的片段在调用之前是否已初始化?

if (newFragment == null) {
    // If not, instantiate and add it to the activity
    ft.add(yourFragmentContainerId, newFragment,"tag");
} else {
    // If it exists, simply attach it in order to show it
    ft.show(newFragment);
}
于 2013-11-06T15:45:22.287 回答
1

您之前是否添加到您的视图层次结构的newFragment某些部分?Activity如果您只是实例化 aFragment并告诉它显示,它不会知道在哪里显示(除非它是 a DialogFragment,我猜)。您需要使用add(somelayoutid,fragment,"sometag")每个Fragment,然后您可以根据需要隐藏/显示它们。如果您不需要在隐藏时保留您Fragment的 ',您也可以不断地使用替换,而不是隐藏/显示。

如果您正在处理旋转,“sometag”将很有用,因此您可以在重新创建Fragment后检索对每个的引用Activity,然后您可以像以前一样隐藏/显示它们。

于 2013-11-06T15:22:50.757 回答