2016-04-14 9 views
0

Also ich bin neu in Java und ich versuche, Quiz-App als Übung zu machen. Ich irgendwie einen gemacht, aber es funktioniert nicht:equals Methode funktioniert nicht beim Vergleichen TextView String

public class QuizActivity extends AppCompatActivity { 
TextView QuestionText; 
Button button1; 
Button button2; 
Button button3; 
Button button4; 
ArrayList<Question> listOfQuestions; 
int currentQuestion = 0; 
Context context = this; 
int NumberOfQuestions; 
GameCreator game; 
String totalCorrect = ""; 
String totalWrong = ""; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_quiz); 

    QuestionText = (TextView) findViewById(R.id.textJautajums); 
    button1 = (Button) findViewById(R.id.buttonOpcija1); 
    button2 = (Button) findViewById(R.id.buttonOpcija2); 
    button3 = (Button) findViewById(R.id.buttonOpcija3); 
    button4 = (Button) findViewById(R.id.buttonOpcija4); 
    NumberOfQuestions = Integer.parseInt(context.getString(R.string.JautajumuSkaits).toString()); 
    game = new GameCreator(NumberOfQuestions); 
    listOfQuestions = game.makeQuestions(); 

    Resources r = getResources(); 
    int px1 = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 165, r.getDisplayMetrics()); 
    button1.setWidth(px1); 
    button2.setWidth(px1); 
    button3.setWidth(px1); 
    button4.setWidth(px1); 

    Resources e = getResources(); 
    int px2 = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 125, r.getDisplayMetrics()); 
    button1.setHeight(px2); 
    button2.setHeight(px2); 
    button3.setHeight(px2); 
    button4.setHeight(px2); 


    if (currentQuestion == 0){ 
     setQuestion(listOfQuestions.get(0)); 
    } 

    button1.setOnClickListener(
      new Button.OnClickListener(){ 
       public void onClick(View V){ 
        gajiens(button1.getText().toString(), listOfQuestions.get(currentQuestion)); 
        currentQuestion++; 
       } 
      } 
    ); 

    button2.setOnClickListener(
      new Button.OnClickListener(){ 
       public void onClick(View V){ 
        gajiens(button2.getText().toString(), listOfQuestions.get(currentQuestion)); 
        currentQuestion++; 
       } 
      } 
    ); 

    button3.setOnClickListener(
      new Button.OnClickListener(){ 
       public void onClick(View V){ 
        gajiens(button3.getText().toString(), listOfQuestions.get(currentQuestion)); 
        currentQuestion++; 
       } 
      } 
    ); 

    button4.setOnClickListener(
      new Button.OnClickListener(){ 
       public void onClick(View V){ 
        gajiens(button4.getText().toString(), listOfQuestions.get(currentQuestion)); 
        currentQuestion++; 
       } 
      } 
    ); 


} 

public void gajiens(String answer, Question thisQuestion){ 
    if (currentQuestion < 14){ 

     if (answer.equals(thisQuestion.getAnswer())){ 
      totalCorrect += "Question: " + thisQuestion.getQuestion() + "\nYour Answer: " + answer + "\n"; 
     } else { 
      totalWrong += "Question: " + thisQuestion.getQuestion()) + "\nYour Answer: " + answer + "\n"; 
     } 

     currentQuestion++; 
     setQuestion(listOfQuestions.get(currentQuestion)); 
    } else { 
     Intent intent = new Intent(this, EndActivity.class); 
     intent.putExtra("correct", totalCorrect); 
     intent.putExtra("wrong", totalWrong); 
     startActivity(intent); 
    } 
} 

public void setQuestion(Question kursh){ 
    QuestionText.setText(kursh.getJautajums()); 
    button1.setText(kursh.getOption1()); 
    button2.setText(kursh.getOption2()); 
    button3.setText(kursh.getOption3()); 
    button4.setText(kursh.getOption4()); 
} 

Objekt Frage ist:

public Question(String Question, String Option1, String Option2, String Option3,String Option4, String correctAnswer){ 
    Question = Question; 
    Option1 = Option1; 
    Option2 = Option2; 
    Option3 = Option3; 
    Option4 = Option4; 
    correctAnswer = correctAnswer; 
} 

Grundsätzlich ist das Problem ist, dass App nicht die richtigen Antworten zählt. Aus irgendeinem Grund verwendet die meiste Zeit den ursprünglichen Text von TextView als "correctAnswer". Jeder hat eine Idee, was zu tun ist? Ich vermute, da dies nicht richtig funktioniert, ist dies nicht der beste Ansatz, also kann jemand vielleicht einen besseren vorschlagen?

+1

tun können Vielleicht sollten Sie Ihre Frage Klasse ändern Sie die Parameter, die Sie in sie setzen, um zu klären, anstatt sie neu zuweisen. Zum Beispiel 'this.Question = Question;'. Variablen sind auch camelCased, bitte verwenden Sie keine Großbuchstaben-Variablennamen. –

+0

.equals funktioniert wahrscheinlich, was nicht funktionieren könnte, ist die Logik/das Setup, die Sie zu .equals bringt :) Seitliche Anmerkung, in Ihrem Fragekonstruktor wollen Sie wahrscheinlich den Zweck von 'this' in Java untersuchen. – zgc7009

+1

Der Konstruktor von '' Frage'' setzt keine Felder. Es weist die Parameter ihren eigenen Werten zu. – f1sh

Antwort

0

den Wert eines Textview mit einem String vergleichen Sie diese wie unten

TextView tvAnswer = (TextView) findViewById(R.id.tvAnswer); 
String correctAnswer = "Correct Answer"; 
if(correctAnswer.equals(tvAnswer.getText.toString())) 
{ 
    //do something 
} 
else{ 
    //do something 
    }