2017-06-27 7 views
-4

私はいくつかの数学的問題を抱えてアプリケーションを開発中です。 フォトショップで写真を作ったところ、画像の下にeditTextとボタンがあります。 すべては問題ありませんが、editTextが空のときにボタンをクリックすると、アプリケーションがクラッシュします。 私は他の質問からの例を試しましたが、彼らは私を助けませんでした。ボタンをクリックするとアプリケーションがクラッシュするedittextが空になる

public class Start1Activity extends AppCompatActivity { 

Button btn; 

public void displayResult(String result) { 
    Toast.makeText(Start1Activity.this, result, Toast.LENGTH_SHORT).show(); 
} 

public void guess(View view){ 
    final EditText EditText2 = (EditText) findViewById(R.id.editText2); 

    final int guessNumber = Integer.parseInt(EditText2.getText().toString()); 

    if (guessNumber == 3){ 
     displayResult("That's right! Click once again for next level"); 
     btn = (Button) findViewById(R.id.bt3); 
     btn.setOnClickListener(new View.OnClickListener(){ 
      @Override 
      public void onClick(View view){ 
       if(EditText2.getText().toString().isEmpty()){ 
        displayResult("Please enter some number"); 
       } 
       Intent anythingintent=new Intent(Start1Activity.this,Start2Activity.class); 
       startActivity(anythingintent); 
      } 
     }); 
    } 
    else{ 
     displayResult("Wrong. Try again!"); 

    } 
} 
+0

'onClick()'ではなくonCreate()メソッドでビューをインスタンス化する必要があります – GGWP

答えて

0

ここで間違っていることがいくつかありますが、見出しは間違った順序で行います。 onClick内のEditTextのすべてのチェックを行う必要があります。そうしないと、アプリはNullPointerExceptionをスローする可能性があります。以下のコードはあなたのために働くはずです。 parseInt(とはNumberFormatExceptionを避けるために

public void guess(View view){ 
    final EditText editTextField = (EditText) findViewById(R.id.editTextField); 
    btn = (Button) findViewById(R.id.bt3); 

    final int guessNumber = Integer.parseInt(editTextField.getText().toString()); 

    btn.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View view){ 
      if(editTextField.getText().toString().isEmpty()) { 
       displayResult("Please enter a number"); 
      } 
      else if (!(guessNumber == 3)) { 
       displayResult("Wrong. Try again!"); 
      } 
      else { 
       displayResult("That's right! Click once again for next level"); 
       Intent anythingintent=new Intent(Start1Activity.this,Start2Activity.class); 
       startActivity(anythingintent); 
      } 
     } 
    }); 
} 
+0

ありがとう、man。これは私にはたくさんのことを意味します。 私は数日前に のAndroidを使い始めました。最近まで、私はプログラミングに触れていなかったので、これはまったく新しいものです。 :) –

+0

私の喜び、幸せなコーディング! –

0

)、値が入力されていることを確認し、以前の(ないのonClick()で)作ります。

関連する問題