我想使用具有多个布局的单个片段(仅可以铺设多个布局的单个片段类)。我有两个布局xml文件。根据运行时的情况,我必须在布局xml文件之间切换。实际上应用程序必须发布一个表单。如果用户必须填写表单,则必须显示带有问卷布局的片段,当用户单击提交按钮时,必须显示同一片段中的另一个布局,并显示结果。如果用户已提交表单,则必须显示包含结果布局的片段。
有可能吗?如果没有,请建议任何其他可行的替代方案。
答案 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;
}
}