Android:动态替换布局视图

时间:2012-09-27 07:19:38

标签: android android-fragments

在我的应用程序中,我希望用户填写一个大表格(5-10个字段)。并非所有字段都是EditTexts,有些是Spinners,RadioButtons等,

因此,不要将它们全部放在一个布局中(用户可能会离开屏幕,看到这么多问题)。我想把它作为会话/提问者的事情。

提交每个答案最终会显示一个新问题。

不是为每个问题分别设置Activity,而是更改同一Activity的ContentView。

解决方案如:

1。根据要提出的问题使视图的可见性可见/已消失

2。更改ContentView和所有onCreate()。

当我必须10次更改ContentViews或Visibilities时,

效率低下。

我应该在布局中使用片段并将其替换为新的片段吗?

即便如此,我最终还是为碎片类提供了10个Fragment类和10个布局。

还有其他方法可以实现这一点。现在我正在使用Fragments。

谢谢

2 个答案:

答案 0 :(得分:1)

我相信,Fragments将是这里的最佳选择,因为无论哪种方式(即动态或创建布局文件),您都必须将其写入10次。

因此,Fragments会更好,因为每个布局都会被动态替换为之前的布局。

但是你也必须考虑一种情况,也就是说,如果将来你必须在你的表单中添加新的问题,那么你将不得不在代码中做很多修改,否则,这是最好的使用碎片的地方。

答案 1 :(得分:1)

我有类似的情况,用户必须填写一些请求,状态和导航窗格在整个应用程序中保持不变,因此每次启动新活动都没有意义。因此我制作了一个主要布局,其中三个线性布局利用顶部和底部进行导航/状态,中间部分用于显示问题。

我创建了不同的布局,并根据需要对它们进行了充气/放气,因为我只有几个(3)布局。如果布局数量增加,那么跟踪和膨胀/收缩它们的方法可能会变得复杂。

如果您有顺序流,添加和删除布局/问题相当容易。这种方法的一个缺点是背斜,你必须自己实现逻辑,因为你保持在一个活动中,而背压将退出活动。这种方法也有一些优点,因为您在问题中收集的所有数据都是现成的,如果您的下一个问题是基于之前的答案,那么这是一个福音,它减少了相当多的工作,不得不按照意图传递它们。 / p>

但是,我对Fragments没有多少经验,因为我选择了这种方法,因为它比片段简单得多,并且需要更少的时间来实现我的要求。