2014-09-03 76 views
0

我是编程新手,我正在Android中创建一个简单的测验应用程序。我的问题是我想创建不同类别的问题。我用过sqlite数据库。 我已经成功地创建了“常见问题”类别,这里是代码:Android测验应用程序

List<Question> question_list; 
int score = 0; 
int qid = 0; 
Question currentQ; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    QuizHelper qh = new QuizHelper(this); 
    question_list=qh.getAllQuestions(); 
    currentQ = question_list.get(qid); 
    tv_question = (TextView)findViewById(R.id.tv_question); 
    rda = (RadioButton)findViewById(R.id.radio1); 
    rdb = (RadioButton)findViewById(R.id.radio2); 
    rdc = (RadioButton)findViewById(R.id.radio3); 
    rdd = (RadioButton)findViewById(R.id.radio4); 
    rde = (RadioButton)findViewById(R.id.radio5); 
    btn_next = (Button)findViewById(R.id.button1); 
    setQuestionView(); 
    rg = (RadioGroup)findViewById(R.id.RadioGroup1); 
    btn_next.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) 
     { 
       answerCheck(); 

     } 
    }); 
} 

    public void answerCheck(){ 
    rda.setChecked(false); 
     rdb.setChecked(false); 
     rdc.setChecked(false); 
     rdd.setChecked(false); 
     rde.setChecked(false); 

     rda.setClickable(true); 
     rdb.setClickable(true); 
     rdc.setClickable(true); 
     rdd.setClickable(true); 
     rde.setClickable(true); 

     rg = (RadioGroup)findViewById(R.id.RadioGroup1); 
     answer = (RadioButton)findViewById(rg.getCheckedRadioButtonId()); 

     if(answer != null){ 
      if(currentQ.getANSWER().equals(answer.getText())) 
      { 
       score++; 
       Log.d("myscore", "" + score); 
      } 

     } 

    if(qid < 5){ 
    currentQ = question_list.get(qid); 
    setQuestionView(); 
    }  
} 

public void setQuestionView(){ 
    counter.start(); 
    tv_question.setText(currentQ.getQUESTION()); 
    rda.setText(currentQ.getOPTA()); 
    rdb.setText(currentQ.getOPTB()); 
    rdc.setText(currentQ.getOPTC()); 
    rdd.setText(currentQ.getOPTD()); 
    rde.setText(currentQ.getOPTE()); 
    qid++; 
} 

现在我的问题是,如果我想实现另一个类,我应该用其他活动和继承MainActivity类? Databse包含第一类别的五个问题和第二类别的其他5个问题。我使用了继承,但应用程序崩溃了。有人可以帮助我实现继承吗?

在此先感谢

+0

如果您打算从数据库中获得问题,**和**问题的数量是固定的,则有一项活动更可取。只需根据类别设置您提取的问题。 – 2014-09-03 06:34:23

+0

在answerCheck()方法中,qid变量被设置为第一类,即它将从qid 0到qid 4工作。现在如何将它设置为qid 6到qid 10? – awesum 2014-09-03 06:41:44

+0

不要比较qid。取另一个变量category_id,并相应地继续。 – 2014-09-03 06:43:15

回答

0

不,您应该只使用一个活动。 您可以根据您的类别制作通用问题布局并多次膨胀。 现在只需使用“getQuestionByCategory(categoryId)”查询并在您的应用程序中使用。