2016-03-06 108 views
-2

我有一個應用程序測驗到大學的問題。
即使我通過正確的答案應用程序崩潰:Incorrect on the main activity screen
請幫幫我。
我認爲問題在於在活動之間或在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) { 

With

if (message.equalsIgnoreCase(answer_1)) { 

注:我用equalsIgnoreCase,因爲我認爲你不需要讓它情況下給出的答案是敏感的。

+0

謝謝。有用。 –

+0

@M.Świerczek它是我們的榮幸。我建議你檢查任何答案是否正確,如果問題解決了... –

+0

我如何檢查答案是否正確? –

1

總是使用string.equals(String other)函數來比較字符串,而不是==運算符。

string.equals(String other)函數檢查字符串的實際內容,但==運算符檢查對象的引用是否相等。

equalsIgnoreCase是當情況不考慮

+0

謝謝。有用。 –