我的应用程序上有一个 SQLite 表,其中包含一组问题。用户可以进行此测试的活动最初加载第一个问题,然后每次按下下一步时,它都会设置问题的文本并将 textView 回答到 SQLite 表的下一行。
问题是,如果我希望用户能够单击答案并移至下一个问题,那么如果他们按下上一个问题按钮,我希望该答案保持突出显示/选中 - 这意味着我认为最好的方法是将所有问题加载到活动中的单独布局中,并让活动一次显示一个。
是否可以每次循环并创建一个布局,还是会杀死内存?
我的应用程序上有一个 SQLite 表,其中包含一组问题。用户可以进行此测试的活动最初加载第一个问题,然后每次按下下一步时,它都会设置问题的文本并将 textView 回答到 SQLite 表的下一行。
问题是,如果我希望用户能够单击答案并移至下一个问题,那么如果他们按下上一个问题按钮,我希望该答案保持突出显示/选中 - 这意味着我认为最好的方法是将所有问题加载到活动中的单独布局中,并让活动一次显示一个。
是否可以每次循环并创建一个布局,还是会杀死内存?
出于多种原因,您不想这样做。layouts
将多个用于一个很少是一个好主意Activity
。我不知道您layout
的外观如何,但您可以parent and child views
动态加载,如果您不知道每次问题的数量,这可能是您想要做的。
你可以用类似的View
东西创建一个
TextView question = new TextView(this);
然后将其添加layout
到addView()
您可以LinearLayout
在一个单独的文件中说 a 并在每次需要新问题时对其进行扩充,并相应地设置其内部Views
。
Views
另一种选择,如果您知道应该有多少,则layout
在 xml 中创建它们并在 xml 中使用该visibility
属性,然后在他们单击时将android:visibility="invisible"
其更改为Javavisible
Button
textView.setVisibility(View.VISIBLE);
在不确切知道您拥有什么的情况下很难举出很多例子,但我建议您研究这两个选项之一
如果每个问题/答案都有大 s 或希望它们可重用,您可能会考虑的另一种选择是layout
为每个问题/答案创建单独的文件,并使用<include>
标签将每个文件包含在 mainlayout
中。您也可以通过visibility
这种方式使用该属性并拥有单独的文件。您只想尝试避免setContentView()
多次调用,因为这会将您Views
的所有设置设置为默认值,并且可能会变得混乱,从而导致更多问题。
除了预先加载所有布局,您还应该将答案存储在 sqlite 中,并在再次加载该屏幕时设置值。所以流程会:
onCreate -> 设置内容视图
onResume -> 检查是否存在针对 sqlite 查询问题的答案。如果存在答案,请设置值。
onPause -> 如果设置了答案,则存储到 sqlite
实际上,您可能希望在他们单击下一步按钮时进行保存。如果您随后打开一个新活动,这将反过来调用 onPause。