如何在与当前片段相同的空间中加载新片段

时间:2011-10-17 12:35:41

标签: android android-fragments

我正在寻找一些关于处理启动其他碎片的碎片的最佳方法的建议。

我正在转换一个应用程序,我开始使用更多基于活动的方法编写,然后开始将其转移到使用Fragments。我有一些片段用于启动一个新的活动,我想将它们移动到在当前片段所在的同一视图中启动其他片段。

例如 - 我有一个Activity,它有一个WebView,它使用WebViewClient来处理内部的js-> java交互。我的WebViewClient可以启动其他活动,我曾经这样做过:

 i = new Intent(context, GoogleMapActivity.class);
 startActivity(i);

这个webview活动既可以是全屏也可以是侧面有菜单的视图,但是我希望webview能够尊重布局 - 所以如果菜单存在,它应该在启动新碎片时保持存在 - 我只是穿上不知道编写启动片段的代码的最佳方法。

所以......在片段中,有没有一种方法可以基本上告诉新的片段加载到与当前片段相同的空间中,或者是否需要与活动进行一些交互?

**编辑**

鉴于可以使用一些不同的布局,我并不总是知道我应该将哪个ID放在片段中 - 因此我需要知道是否有办法在不知道id的情况下执行此操作(例如在replace方法中)。

3 个答案:

答案 0 :(得分:6)

getFragmentManager().beginTransaction()
   .replace(((ViewGroup) getView().getParent()).getId(), fragment)
   .addToBackStack(null)
   .commit();

这应该用所需的片段替换父容器。

答案 1 :(得分:0)

这应该可以通过FragementManager.replace()来实现。请查看documentation for Fragment,尤其是“布局”部分中的较长示例。

答案 2 :(得分:-1)

如果您想添加片段而不是替换它,请使用:

getFragmentManager().beginTransaction().add(R.id.fragment_container, new Fragment()).commit();