在onCreateView运行后替换片段视图

时间:2012-06-08 15:41:04

标签: android android-layout android-fragments

我有一个具有两种视图模式的片段,一种编辑模式和一种只读模式。用户可以通过在两种模式下可用的微调器中选择的状态之间移动来切换模式。

创建片段时,我会选择一个只读或编辑布局,根据我管理的对象的状态进行膨胀。一旦用户选择新状态,模式可以从只读切换到编辑模式。发生这种情况时,我需要用只读视图替换编辑视图。

如何替换片段中的现有视图?在一个Activity中,我会用我想要使用的布局调用setContentView。

我试过了:

  • 使视图无效,但不会再次调用onCreateView。
  • 使用片段事务替换片段,但不会更改布局。

注意:这适用于Android 4.0,我无法使用兼容性库。

1 个答案:

答案 0 :(得分:1)

如果您想将所有内容保存在一个片段中:

我不完全确定你的布局看起来如何,但我想我只是将两个布局都放在ViewFlipper中,并根据所选内容更改它显示的子项。

样本片段布局

<LinearLayout android:orientation="vertical" ..>
    <Spinner ../>

    <ViewFlipper android:id="@+id/flipper" ..>
        <ReadOnlyLayout />
        <EditLayout />
    </ViewFlipper>

</LinearLayout>

然后您可以简单地使用setDisplayedChild()在两种布局之间切换,具体取决于您拥有的状态。

ViewFlipper vf = (ViewFlipper) getView().findViewById(R.id.flipper);
vf.setDisplayedChild(1);

请注意,子索引以0开头。

也可以使用两个独立的片段(如Barak所建议的)。我想这只是一个设计选择。