2017-09-07 1 views
0

Ich habe gerade angefangen, an der Android-App zu arbeiten und eine Quiz-App zu machen, bei der der Benutzer ein Quiz absolvieren muss, um Punkte zu erhalten. Aber ich bin nicht in der Lage, die setText und setImage für meine ResultActivity zu aktualisieren. Wenn ich das Quiz auf QuizActivity beende, aktualisiert die ResultActivity nur die Punktzahl, aber aktualisiert nicht den Text und das Bild, das ich für den Bildschirm möchte.UI wird nicht automatisch aktualisiert, es ändert sich erst nach der Aktualisierung

Hier ist der Code und ich bin in der Lage zu setText basierend auf der "Punktzahl", aber ich muss die Benutzeroberfläche aktualisieren, um die Änderungen zu sehen. Ich gebe die Punktzahl von einer anderen Aktivität und ändere den Text basierend auf der Punktzahl. Bitte helfen Sie mir, danke im Voraus.

//code for QuizActivity  
private void updateQuestion(){ 
    if(mQuestionNumber < mQuestionLibrary.getLength()){ 
     mQuestionView.setText(mQuestionLibrary.getQuestion(mQuestionNumber)); 
     mButtonChoice1.setText(mQuestionLibrary.getChoice(mQuestionNumber, 1)); 
     mButtonChoice2.setText(mQuestionLibrary.getChoice(mQuestionNumber, 2)); 
     mButtonChoice3.setText(mQuestionLibrary.getChoice(mQuestionNumber, 3)); 
     mButtonChoice4.setText(mQuestionLibrary.getChoice(mQuestionNumber,4)); 
     mAnswer = mQuestionLibrary.getCorrectAnswer(mQuestionNumber); 
     mQuestionNumber++; 
    } 
    else { 
     Intent intent = new Intent(QuizActivity.this, ResultActivity.class); 
     intent.putExtra("score", mScore); 
     // pass the current score to the second screen 
     startActivity(intent); 

     //The Following is the code for ResultActivity 
     Intent intent = getIntent(); 
     int score = intent.getIntExtra("score", 0); 
     SharedPreferences mypref = getPreferences(MODE_PRIVATE); 
     int highscore = mypref.getInt("highscore", 0); 
     if (highscore < score) { 
      txtScore.setText("Your Score: " + score + " /10"); 
      SharedPreferences.Editor editor = mypref.edit(); 
      editor.putInt("highscore", score); 
      editor.commit(); 
     } 
     else { 
      int score1 = score + highscore; 
      txtScore.setText(" Your score: " + score1 + " /10"); 
      SharedPreferences.Editor editor1 = mypref.edit(); 
      editor1.putInt("highscore", score1); 
      editor1.commit(); 
     } 
     if (highscore == 0) { 
      image1.setVisibility(View.GONE); 
      txtScore.setVisibility(View.GONE); 
      resulttext.setText("INSTRUCTION \n" + 
       "\n" + 
       "1) CLICK on ‘hello!’\n" + 
       "\n" + 
       "2) VISIT hello\n" + 
       "\n" + 
       "3)EE" + 
       "\n" + 
       "4)EE!"); 
      btnscan.setText("abc!"); 
     } 
     else if (highscore == 1 & highscore < 2) { 
      resulttext.setText("Well Done!"); 
      image1.setImageResource(R.drawable.bubble); 
      btnscan.setText("Let's bubble on"); 
     } 
     else if (highscore >= 3) { 
      resulttext.setText("These are good practices to learn.\n" + 
       "\n" + 
       "Bloop bloop~"); 
      image1.setImageResource(R.drawable.lightbulb); 
      btnscan.setText("Let’s keep swimming"); 
     } 
    } 
} 
+0

Sie sagen: > ich bin nicht in der Lage, die setText und setImage für meine ResultActivity zu aktualisieren. gut: 'setText' und' setImage' sind Methoden nicht anzeigen. Ich denke du meinst TextView und ImageView, aber welche du meinst. –

+0

Hi @Ali Zeynali, ist die in ResultActivity.if (highscore == 0) {resulttext.settext ("xxx"); –

Antwort

1

aus dem Code, versuchen Sie die ResultActivity mit zu starten:

Intent intent = new Intent(QuizActivity.this, ResultActivity.class); 
intent.putExtra("score", mScore); 
// pass the current score to the second screen 
startActivity(intent); 

dann wollen Sie die Aktivität mit dem Code aktualisieren:

//The Following is the code for ResultActivity 
Intent intent = getIntent(); 
int score = intent.getIntExtra("score", 0); 
SharedPreferences mypref = getPreferences(MODE_PRIVATE); 
... 

den Code erwartet ausgeführt werden nachdem die Aktivität angezeigt wird.

Aber das wird nicht passieren, weil startActivityasynchrone Methode ist. Daher müssen Sie die Daten vor dem Start von ResultActivity aktualisieren oder die Daten in ResultActivity aktualisieren.

+0

ok thx. Irgendeine Idee, wie ich die Daten aktualisieren kann, bevor ich ResultActivity starte? Entschuldigung, ich bin neu: x –

+0

Berechnen Sie zuerst die Punktzahl. Nachdem Sie die Berechnung abgeschlossen und in SharedPreferences gespeichert haben, können Sie die Aktivität starten. –

Verwandte Themen