2011-06-13 51 views
0

我很想听听你们认为最简单的多项选择测验的最有效率/坚实的面向对象设计。设计建议:多项选择测验

基本上,应用程序提出了一系列问题,每个问题有4个选择。如果您选择的选项是正确的,那么新的活动会在正确的答案后面显示一些恭喜和全部细节,如果您错了,会说您错了,并附带详细信息等。

After那用户转到下一个问题。在每个新问题上,你都会看到你的分数。所以,也许你为每个正确答案得到50分,就像那样。

下面是我如何思考如何实现:使用一些单选按钮或可用于选择答案的其他小部件创建自定义视图。自定义视图需要一个Question对象,它只是一个普通的旧Java对象,其中包含用于选择1-4的字段。然后,在自定义视图中,我可以将单选按钮的文本设置为来自我的Question对象的选项。

因此,在我activity它会看起来像Question myQuestion = new Question("string for choice 1", "string for choice 2"...)

然后..

使用我的自定义视图的问题。 QuestionView myView = new QuestionView(this, myQuestion);

好的,这一切都很棒。我只是想知道我是否为了麻烦而设置自己。首先,我必须跟踪所有问题活动的分数。是否有意义让我的所有问题具有一些子类,主要是空的,我创建的activity可以有一个计数器,当用户得到答案时(即在我的超类活动int scoreKeeper;和每个活动的子类中此活动:if(choiceIsCorrect) scoreKeeper++)。这将使分数在整个活动中持续存在。我意识到我可以在活动之间进行分数传递和额外的每一项新活动,然后简单地加入它,但这对我来说似乎没有任何意义。

对不起所有的blabbering ..但我想我的问题是:你认为这是最简单的设计?另外,总的来说,我总是认为,只要用户正在做一个“单一的,有针对性的事情”,就应该总是使用新的活动......就像Android范例所说的那样。但有时候创造这么多活动感觉很奇怪。我知道“感觉奇怪”这个事实没有理由不这么做,但是什么时候重用活动才是有意义的(例如,在这种情况下,只需在我的活动中交换一个新问题并相应地更新UI)而不是开始一项新的活动?

此外,一个更详细的问题 - 什么是平滑的方式来设置哪个选项(例如哪个单选按钮)包含正确的答案,以便当用户按下提交时,我可以检查他们是否有正确的答案,是/没有相应的反应?

总结:

  1. 什么是简单的,面向对象的方式来创建的选择题活动继承?
  2. 跟踪评分最明智的方法是什么?
  3. 每个问题是否都必须是单独的活动? (一般来说,你们如何处理是否应该是一个单独的活动的问题?)
  4. 此外,有什么特别的:什么是最简单的方法来标记哪个选择是正确的,所以我可以检查用户是否正确?例如,我知道使用单选按钮,您可以使用onCheckedChangeListener并检索当前选中哪个单选按钮,但是我不确定如何在我的设计中使用该按钮来检查用户是否正确。

谢谢!

+0

不,不适用于任何班级。只是从那些具有设计模式经验的人那里寻求一些建议。我知道我可以“完成”,但我想看看是否有更好的方法。 – LuxuryMode 2011-06-13 18:26:07

回答

2

我不会让“正确/不正确的信息活动”自己的活动。相反,当用户选择单选按钮选项,然后单击“确定”按钮时,将弹出一个对话框。当他们关闭对话框时,会有一个按钮进入下一个问题。

我想说你应该在一项活动中做到这一切。

+0

是的,正确/不正确的屏幕不需要是一个单独的活动。但其余的呢?你为什么说它应该都是一项活动? – LuxuryMode 2011-06-13 18:27:11

+1

由于每个问题屏幕与最后一个屏幕基本相同。它有相同的布局。唯一改变的是文本占用屏幕上的所有东西(分数,问题,答案选择等)。如果最后你有一个完全不同的总结/总结屏幕,显示所有问题的回顾,那么这可能是一个新的活动。 – Matt 2011-06-13 18:37:25

0

我打算在ViewFlipper中使用一项活动来解决问题。