在Android中使用具有多个布局的单个片段

时间:2014-09-09 06:19:35

标签: android xml layout fragment

我想使用具有多个布局的单个片段(仅可以铺设多个布局的单个片段类)。我有两个布局xml文件。根据运行时的情况,我必须在布局xml文件之间切换。实际上应用程序必须发布一个表单。如果用户必须填写表单,则必须显示带有问卷布局的片段,当用户单击提交按钮时,必须显示同一片段中的另一个布局,并显示结果。如果用户已提交表单,则必须显示包含结果布局的片段。

有可能吗?如果没有,请建议任何其他可行的替代方案。

1 个答案:

答案 0 :(得分:1)

一种解决方案是,FrameLayout视图可以使用简单的Fragment。然后使用LayoutInflater对相应的视图进行充气,并将其添加到FrameLayout。您可以通过删除现有视图来切换布局,并对其他视图进行充气以替换它。

代码将是这样的:

private FrameLayout mContainer;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    mContainer = (FrameLayout) inflater.inflate(R.layout.fragment_framelayout, null);

    onSubmittedStateChanged(SubmittedState.SUBMITTED); // OR SubmittedState.NOT_SUBMITTED

    return mContainer;
}

public void onSubmittedStateChanged(SubmittedState state) {
    LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    mContainer.removeAllViews();

    switch (state) {
    case SubmittedState.SUBMITTED:
        inflater.inflate(R.layout.submitted, mContainer);
        break;
    case SubmittedState.NOT_SUBMITTED:
        inflater.inflate(R.layout.not_submitted, mContainer);
        break;
    }
}