2016-10-26 52 views
0

我正在創建一個測驗應用程序,但我無法獲得前一個問題按後退按鈕。
我從sqlite數據庫得到的問題。使用SQLite數據庫的測驗應用程序(後退按鈕不工作)

請幫我編寫代碼。

我的代碼對於下一個按鈕正常工作,但不適用於後退按鈕。

public class MainActivity extends AppCompatActivity { 
     List<Questions> quesList; 
     int score=0; 
     int qid=0; 
     Questions currentQ; 
     TextView tv; 
     RadioButton rb1,rb2,rb3,rb4; 
     ImageButton next,back; 
     Questions cur; 
     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      DbHelper db=new DbHelper(this); 
      final RadioGroup grp=(RadioGroup) findViewById(R.id.radiogroup1); 
      quesList=db.getAllQuestions(); 
      if(quesList!= null && quesList.size() !=0) { 
       currentQ=quesList.get(qid); 
      } 
      tv=(TextView) findViewById(R.id.tv1); 
      rb1=(RadioButton) findViewById(R.id.radio1); 
      rb2=(RadioButton) findViewById(R.id.radio2); 
      rb3=(RadioButton) findViewById(R.id.radio3); 
      rb4=(RadioButton) findViewById(R.id.radio4); 
      next=(ImageButton) findViewById(R.id.forward); 
      back=(ImageButton) findViewById(R.id.backward); 
      setQuestionView(); 

    //code for next button..  

next.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       RadioButton answer=(RadioButton) findViewById(grp.getCheckedRadioButtonId()); 

       if(currentQ.getAnswer().equals(answer.getText())) 
       { 
        score++; 
        Log.d("score", "Your score" + score); 
       } 
       if(qid<5){ 
        currentQ=quesList.get(qid); 
        setQuestionView(); 

        qid++; 
        grp.clearCheck(); 
       }else{ 
        Intent intent = new Intent(MainActivity.this, ResultActivity.class); 
        Bundle b = new Bundle(); 
        b.putInt("score", score); //Your score 
        intent.putExtras(b); //Put your score to your next Intent 
        startActivity(intent); 
        finish(); 
       } 
      } 
     }); 
     back.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(qid>0) { 
      qid--; // here you decrement 
      currentQ=quesList.get(qid); // here you load 
      setQuestionView(); 
      grp.clearCheck(); 
     } else { 

     } 
    } 
     }); 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 
    private void setQuestionView() 
    { 
     tv.setText(currentQ.getQuestion()); 
     rb1.setText(currentQ.getOption1()); 
     rb2.setText(currentQ.getOption2()); 
     rb3.setText(currentQ.getOption3()); 
     rb4.setText(currentQ.getOption4()); 

    } 

} 

回答

1

您需要覆蓋Activity.onBackPressed(),這樣應用程序纔會知道您在按回時想要執行的操作。就像這樣:

@Override 
public void onBackPressed() 
{ 
    showPreviousQuestion(); 
} 

在你的情況,我想你想要做的事,如:

@Override 
public void onBackPressed() 
{ 
    if(qid>0) { 
     qid--; // here you decrement 
     currentQ=quesList.get(qid); // here you load 
     setQuestionView(); 
     grp.clearCheck(); 
    } 
} 
+0

當我們點擊上一頁按鈕,我們應該得到與檢查答案的問題...在上面的代碼中,回覆被擦除。如果我想改變我的答案,我應該能夠修改我的選項,它應該會影響我的分數。 – JAY123

+0

你應該實現一些邏輯來跟蹤答案並允許你修改它們。此代碼是如何更改後退按鈕的功能的示例 – iguarna

+0

可以請你幫我用代碼的那一部分....... – JAY123

0

調用完成方法活動

back.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       if(qid>0) { 
      qid--; // here you decrement 
      currentQ=quesList.get(qid); // here you load 
      setQuestionView(); 
      grp.clearCheck(); 
     } else { 
finish(); 

     } 
    } 
     }); 
+0

當我們點擊上一個按鈕時,我們應該得到與檢查答案的問題。 ..在上面的代碼中,回覆被刪除。如果我想改變我的回答,我應該可以修改我的選項,它會影響我的分數。 – JAY123

相關問題