【问题标题】:How to: Keep track of Progress on questionnaire如何:跟踪调查问卷的进度
【发布时间】:2016-04-08 14:49:35
【问题描述】:

大家好,我正在开发一个涉及片段、跟踪数据和 SharedPreferences 的练习应用程序,这是场景,我有一个类似问卷的应用程序,它会询问用户 15 个问题,但为了这个例子,我会说五(5)个并使用带有是和否按钮的随机问题作为选项。它看起来像这样:

|问题1:你是公民吗?|

是/否

|问题2:你是人类吗?|

是/否

|问题3:你经常睡觉吗?|

是/否

|问题 4:你认为你需要帮助吗?|

是/否

|问题5:你经常说再见吗?|

是/否

|----------------------------|
|                            |
|                            |
|                            |
|   fragment displayed here  |
|                            |
|                            |
|----------------------------|
|                            |
|yes                  no     |
|----------------------------|

图 1- 显示应用程序的外观 - 两个线性布局都分成两部分

现在,每个问题都在其自己的Fragment 中显示在图 1 所示的“此处显示的片段”部分中。下半部分的“是”和“否”按钮不应该停滞不前,而是实际上与每个问题相关联问题。一旦用户从按钮中单击一个选项,它将显示另一个问题。注意:问题不是列表,选择特定(是/否)将依次显示相应的问题。

例如,问题 1:是将带您到问题 3,回答否将带您到问题 4,依此类推。现在,每个问题都有选项或机会提供文档或根据选择说“您将需要 document.doc”。我需要找到一种方法来跟踪用户选择的答案,并在计算这些答案以及显示文档的机会时,我将显示一个结果页面告诉用户:“您将需要以下文档:documents.doc , hello.doc 等”。结果页面显示了所有用户选择的内容。例如

Question1:yes
Question2:no
Question3:yes
Question4:yes
Question5:yes
Result: You will need documents: documents.doc, hello.doc, bye.doc, yes.txt

如果有什么不清楚的地方,请告诉我。基本上现在我只想知道如何完成这项任务,如果有人能与我一起尽快完成这项工作,我将不胜感激。非常感谢社区。​​p>

【问题讨论】:

    标签: android android-fragments saving-data android-sharedpreferences


    【解决方案1】:

    如果我正确理解了您问题的核心,那么您(对于每个问题)有不同的活动和观点,需要将这些活动和观点合并到一个中心状态,收集所有答案和由它们确定的文档。所以解决方案的想法是拥有一个域对象来保存答案和从给定答案中确定文档的逻辑。类似的东西

    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 的方法来序列化答案,并反过来调用在其@ 中反序列化它们987654327@方法。

    • 从用户的角度来看,豪华版是将答案存储在一个数据库中,除了设备的物理损坏之外,它们将在所有情况下都可以存活。

    走哪条路也取决于使用场景。如果您想像用户不间断地回答所有这些问题,则可能不需要保存实例。用户在问卷中投入的精力越多,您的应用就应该花费更多的精力来保留答案。

    【讨论】:

    • 您确实理解了这个问题,谢谢。我只需要帮助了解如何索引答案,以便我可以在 if 语句中引用它们
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多