2016-03-06 5 views
-2

У меня есть проблема с приложением Quiz to college.
Даже после того, как я схожу с правильного ответа на запрос приложения: Incorrect on the main activity screen.
Пожалуйста, помогите мне.
Я думаю, что проблема заключается в передаче переменной между действиями или инструкцией if.Условный оператор if не работает должным образом

Мой код MainActivity:

package com.example.mariusz.qiuz; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Gravity; 
import android.view.View; 

import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.TextView; 


public class MainActivity extends AppCompatActivity { 


    Button b3; 
    private static final String answer_1= "Mariusz"; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 


     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     b3 = (Button) findViewById(R.id.answer1); 


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

       startActivity(new Intent(MainActivity.this, Answer1Activity.class)); 

      } 
     }); 
     Intent intent = getIntent(); 
     String message = intent.getStringExtra(Answer1Activity.EXTRA_MESSAGE); 
     if (message != null) { 

      if (message == answer_1) { 
       TextView textView_1 = new TextView(MainActivity.this); 
       textView_1.setGravity(Gravity.CENTER); 
       textView_1.setTextSize(40); 
       textView_1.setText(R.string.correct); 
       LinearLayout activity_main = (LinearLayout)findViewById(R.id.layout); 
       activity_main.addView(textView_1); 
      } else { 
       TextView textView_1 = new TextView(MainActivity.this); 
       textView_1.setGravity(Gravity.CENTER); 
       textView_1.setTextSize(40); 
       textView_1.setText(R.string.incorrect); 
       LinearLayout activity_main = (LinearLayout)findViewById(R.id.layout); 
       activity_main.addView(textView_1); 
      } 
     } 
     else { 

     } 
      } 

    } 

И мой второй код вида деятельности:

package com.example.mariusz.qiuz; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 

/** 
* Created by Mariusz on 2016-03-04. 
*/ 
public class Answer1Activity extends Activity { 

    public final static String EXTRA_MESSAGE = "com.example.mariusz.quiz.MESSAGE"; 

    Button a1; 
    EditText e1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.answer1); 
     a1 = (Button) findViewById(R.id.buttona1); 
     e1 = (EditText) findViewById(R.id.text1); 
     a1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 


       Intent intent = new Intent(Answer1Activity.this, MainActivity.class); 

       String message = e1.getText().toString(); 
       intent.putExtra(EXTRA_MESSAGE, message); 
       startActivity(intent); 


      } 
     }); 


    } 
} 
+1

сообщение об ошибке LogCat – ELITE

+0

Я предложил бы использовать, если (message.contains (ANSWER_1)) {} вместо «==» для струнных – HoseinIT

+1

Также важно, что 'package com.example.mariusz.qiuz;' ошибочно. И эта 'public final static String EXTRA_MESSAGE =" com.example.mariusz.quiz.MESSAGE ";' приведет к ошибке (потому что эта ошибка НЕ ​​написана неправильно). –

ответ

1

Это не правильный способ проверки двух строк, поэтому попробуйте заменить эту линию

if (message == answer_1) { 

С

if (message.equalsIgnoreCase(answer_1)) { 

Примечание:Я использовал equalsIgnoreCase, потому что я думал, что вам не нужно, чтобы сделать его чувствительно к регистру для данного ответа.

+0

Спасибо. Оно работает. –

+0

@ M.Świerczek Наше удовольствие. Я предлагаю вам проверить любой ответ как правильный, если проблема решена ... –

+0

Как я могу проверить ответ правильно? –

1

всегда использовать функцию string.equals(String other) для сравнения строк, а не оператора ==.

Функция string.equals(String other) проверяет фактическое содержимое строки, однако оператор == проверяет, равны ли ссылки на объекты.

equalsIgnoreCase еще одна функция, которая используется, когда дело не считается

+0

Спасибо. Оно работает. –

Смежные вопросы