好的,所以我正在写我的第一个Android应用程序,并且基本上卡住了。该应用程序是一个简短的4问题测验,每个问题有两个选择。这将创建16种可能的结果,这些结果我已经为其创建了说明。我希望应用程序在回答第四个问题后,显示与用户对每个问题的回答相对应的描述。

现在,我将值存储在字符串中,该字符串应该在每个问题之后基于先前的字符串答案构建。因此,第一个答案是t1,第二个答案是t2,依此类推。这是第二个问题的代码:

public class Question2 extends Question1 implements OnClickListener
{
 private Button b1;
 private Button b2;
 public String t2;
 public TextView text2;

 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.question2);
 b1=(Button)findViewById(R.id.gamma);
 b2=(Button)findViewById(R.id.delta);
 b1.setOnClickListener(this);
 b2.setOnClickListener(this);
 text2 = (TextView)findViewById(R.id.TextView02);
 }


 public void onClick(View v) {
  Intent a = new Intent(this, Question3.class);
 if(v == b1)
 {
  t2= t1+"gamma";
  text2.setText(t2);
 startActivity(a);
 }
  if(v == b2)
 {
 t2= t1+"delta";
 text2.setText(t2);
 startActivity(a);
 }

}
}


我的问题是字符串将不包含我在上一个问题中为其分配的值。我有一个textview,它简短地显示问题的答案字符串(对于Question2为t2)返回的值,并根据用户的响应显示nullalpha或nullbeta。

如何将t1先前分配的值保留在Question2中,以便可以添加到其中?例如,如果问题1中的t1 =“ alpha”,并且用户在Question2中选择按钮b1,我如何使t2实际上等于“ alphagamma”而不是“ nullgamma”?使用字符串甚至可能吗?

任何答案和建议,我们将不胜感激。

最佳答案

您需要重新考虑整个方法,并在面向对象的原则上有更好的基础。 Question2扩展Question1没有任何意义,因为它们(彼此之间)没有任何关系。

作为一个初始数据模型,可能只有一个Question类,如下所示:

public class Question {
   private String questionText;
   private List<String> options;
   private String currentAnswer;

   public Question(String questionText, List<String> options) {
      this.questionText = questionText;
      this.options = options;
   }

   public String getQuestionText() {
      return questionText;
   }

   public String getCurrentAnswer() {
      return currentAnswer;
   }

   public void setCurrentAnswer(String answer) {
      this.currentAnswer = answer;
   }
}


您也可以考虑将答案分为不同的对象。

然后,您可以创建一个问题列表,并为四个问题中的每个问题创建一个Question对象。

除了每个问题的活动外,您还可以有一个AnswerQuestionActivity来接收问题(通过Intent附加控件),显示问题,然后将Question对象返回并填写答案(同样通过Intent附加控件)。

返回结果后,可以使用返回的答案更新问题列表,然后根据List<Question>中的当前值重新计算显示字符串。

关于java - 开始Android编程-建立简短的测验,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3866653/

10-14 17:28
查看更多