美好的一天,我正在开发一个涉及片段,跟踪数据和SharedPreferences 的练习应用,这是一个场景,我有一个类似问卷的应用,它会询问用户15个问题但是为了这个例子,我要说五(5)并使用带有是和否按钮的随机问题作为选项。它看起来像这样:
是/否
是/否
是/否
是/否
是/否
|----------------------------|
| |
| |
| |
| fragment displayed here |
| |
| |
|----------------------------|
| |
|yes no |
|----------------------------|
图1-显示应用程序的外观 - 两个线性布局分为两个
现在,每个问题都在其自己的Fragment
中 - 显示在此处显示的"片段中"如图1所示,下半部分中的是和否按钮不应该停滞,但实际上与每个问题相关。用户单击按钮中的选项后,将显示另一个问题。注意:问题不是列表,特定的选择(是/否)将反过来显示相应的问题。
例如,问题1:是的,会将您带到问题3,回答否将带您进入问题4,依此类推。现在,每个问题都有选择或机会提供文件或说“#34;您将需要document.doc"根据选择。我需要找到一种方法来跟踪用户选择的答案,并在计算这些答案以及显示文档的机会后,我将显示告诉用户的结果页面:"您将需要以下文档: documents.doc,hello.doc等"。结果页面显示了所有用户选择的内容。 e.g
Question1:yes
Question2:no
Question3:yes
Question4:yes
Question5:yes
Result: You will need documents: documents.doc, hello.doc, bye.doc, yes.txt
如果有任何不清楚的地方,请告诉我。基本上现在我想知道的是我如何完成这项任务,如果有人愿意尽快完成这项工作,我将非常感激。非常感谢社区。 p>
答案 0 :(得分:0)
如果我的问题核心是正确的,那么您需要将不同的活动和观点(针对每个问题)合并到一个中央状态,收集所有答案以及由他们确定的文档。所以解决方案的想法是拥有一个包含答案的域对象和从给定答案中确定文档的逻辑。像
这样的东西class Questionnaire {
private boolean answer1;
private boolean answer2;
...
public boolean setAnswer1(boolean answer) ...
...
public String getNeededDocuments() {
// determine documents from values of answer1, answer2, ...
}
}
有几种方法可以实现这一点:
最简单的方法是制作上面static
所示类的所有属性和方法。但这些价值观可能会丢失,参见Lifetime of a static variable in Android
另一种方法是在应用程序中保存类的一个对象(Application
类的扩展名)。为了确保在换出应用时,答案值不会丢失,每个活动都应在其onSaveInstanceState
方法中调用Questionnaire
方法来序列化答案,反之亦然用onCreate
方法对它们进行反序列化。
从用户的角度来看,奢侈品版本将把答案存储在一个数据库中,除了设备的物理破坏之外,它们可以存活下来。
哪种方式还取决于使用方案。如果您想象用户不间断地回答所有这些问题,则可能不需要保存实例。用户在调查问卷中投入的费用越多,您的应用程序应该花费更多精力来坚持答案。