在android上的一个活动中动态加载多个布局

时间:2013-06-25 15:30:46

标签: android sqlite android-layout

我的应用程序上有一个SQLite表,它有一组问题。用户可以进行此测试的活动最初加载第一个问题,然后每次按下它时,它会设置问题的文本并将textView应答到SQLite表的下一行。

问题是,如果我希望用户能够点击答案并转到下一个问题,那么如果他们按下上一个问题按钮,我希望该答案保持突出显示/检查 - 这意味着我认为最好的方法是将所有问题加载到活动中的单独布局中,并使活动一次显示一个。

每次都可以循环并创建一个布局,还是会杀死内存?

2 个答案:

答案 0 :(得分:1)

出于多种原因,您不希望这样做。对于一个layouts,多个Activity很少是个好主意。我不知道您的layout看起来如何,但您可以动态加载parent and child views,如果您每次都不知道问题的数量,这可能是您想要做的。

您可以使用类似

的内容创建View
TextView question = new TextView(this);

然后使用layout

将其添加到addView()

您可以在单独的文件中提及LinearLayout,并在inflate每次需要新问题并在其中设置Views时进行相应的操作。

另一个选项,如果您知道Views中应该有多少layout将在xml中创建它们并在xml中使用visibility属性android:visibility="invisible"然后更改单击visible

时,它在Java中Button
textView.setVisibility(View.VISIBLE);

如果不确切知道你有什么,很难给出很多例子,但我建议你研究这两个选项中的一个

如果每个问题/答案都有大layout个或希望它们可重复使用,您可以考虑的另一个选项是为每个问题创建单独的文件并使用<include>标记包含主layout中的每一个。您也可以使用visibility属性以这种方式执行此操作并具有单独的文件。您只是想尝试避免多次调用setContentView(),因为这会将您的所有Views设置为默认值,并且可能会导致更多问题。

答案 1 :(得分:0)

不是预先加载所有布局,而是应该在sqlite中存储答案,并在再次加载该屏幕时设置值。所以流程将会:

onCreate - &gt;设置内容视图

onResume - &gt;检查sqlite查询问题是否存在答案。如果存在答案,请设置值。

onPause - &gt;如果设置了答案,则存储到sqlite

实际上,您可能希望在点击下一个按钮时进行保存..如果您正在打开新活动,则会调用onPause。