2016-10-26 2 views
0

Ich erstelle eine Quiz-App, aber ich bin nicht in der Lage, vorherige Frage durch Drücken der Zurück-Taste zu erhalten.
Ich bekomme die Fragen von SQLite db.Quiz-App mit SQLite-Datenbank (Zurück-Schaltfläche funktioniert nicht)

Bitte helfen Sie mir mit dem Code.

Mein Code funktioniert gut für den nächsten Button, funktioniert aber nicht für den Zurück Button.

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()); 

    } 

} 

Antwort

1

Sie müssen Activity.onBackPressed() außer Kraft zu setzen, so dass der App wird wissen, was Sie wollen, dass es tun, wenn Sie wieder drücken. Wie folgt aus:

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

In Ihrem Fall, ich glaube, Sie tun etwas wollen:

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

, wenn wir auf i.Vj. Schaltfläche klicken , wir sollten die Frage mit überprüfter Antwort bekommen ... In dem obigen Code werden Antworten gelöscht.wenn ich meine Antwort ändern möchte, sollte ich in der Lage sein, meine Option zu ändern, und es sollte meine Punktzahl beeinflussen. – JAY123

+0

sollten Sie eine Logik implementieren, die die Antworten verfolgt und Ihnen erlaubt, sie zu ändern. Dieser Code ist ein Beispiel dafür, wie man die Funktionalität der Zurück-Taste ändern kann – iguarna

+0

können Sie mir bitte mit diesem Teil des Codes helfen ....... – JAY123

0

Rufen Sie die Finish Methode Aktivitäts

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

wenn wir auf die Schaltfläche zurück klicken, sollten wir die Frage mit der überprüften Antwort bekommen. ..In dem obigen Code werden Antworten gelöscht.Wenn ich meine Antwort ändern möchte, sollte ich in der Lage sein, meine Option zu ändern, und es sollte meine Punktzahl beeinflussen. – JAY123

Verwandte Themen