使用Fragment更改UI的一部分

时间:2011-12-07 13:53:07

标签: android fragment

我希望有一个带菜单的标题,并且只能更改UI的剩余部分(即标题和菜单永远不会重新加载,当用户在菜单中选择一个选项时会重新加载内容)。

*******************************************
*               header                    *
*******************************************
* option1 | option2 | option3 | option4...*
*******************************************
*                                         *
*           content to be updated         *
*           according to the option       *
*           selected in the menu          *
*                                         *
*                                         *
*******************************************

我打算使用ViewFlipper并为内容添加/删除布局,但我已经读过,对于复杂内容,使用Fragment可能更好。我见过的唯一例子是使用TabHost和TabWidget,但我有自己的菜单,不使用TabWidget。

我可以为每个菜单的选项使用带有一个片段的ViewFlipper吗?

任何帮助/建议/指针欢迎......

由于

1 个答案:

答案 0 :(得分:0)

您实际上不需要ViewFlipper来执行此操作。

关于Fragments的事情是你可以通过简单地调用替换它的方法来替换现有的Fragment。这可以通过使用(线性,相对,任何你喜欢的,但就我注意到的无关紧要)布局并用片段完全替换它来工作。

假设您将布局命名为mainContent。它是一个嵌入在主布局文件中的LinearLayout,其上面有菜单。然后,您可以使用以下方法向其中添加片段(例如,OptionOne):

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        ft.add(R.id.mainContent, new OptionOne());
        ft.commit();

如果您想用OptionTwo的内容替换它,您只需使用以下内容替换它:

FragmentTransaction ft = getActivity().getSupportFragmentManager()
                .beginTransaction();
ft.replace(R.id.mainView, new Biography(appID, formID, title))
                    .addToBackStack(null);
ft.commit();

注意:我为此使用了Fragments的兼容版本,因此您的代码可能会有所不同。 此外,为了能够使用此方法,您还需要将您想要使用的所有当前活动更改为Fragments