前提・実現したいこと
Android Studioアプリ開発初心者です。
あらかじめ設定した計算式を使って TextEditへ数字を入力し、計算ボタンを押したら自動で計算してくれる簡易的な計算アプリを作っています。
しかし、TextEditに何も記入しないでボタンを押すとアプリが落ちてしまいます。
ここで、if関数を使ってTextEditがnullのときにトーストで表示させようとしているのですが、なかなかうまくいきません。。。
発生している問題・エラーメッセージ
2020-06-12 17:11:23.345 28570-28616/com.example.calculator E/eglCodecCommon: GoldfishAddressSpaceHostMemoryAllocator: ioctl_ping failed for device_type=5, ret=-1 2020-06-12 17:11:27.783 28570-28570/com.example.calculator E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.calculator, PID: 28570 java.lang.IllegalStateException: Could not execute method for android:onClick at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402) at android.view.View.performClick(View.java:6597) at android.view.View.performClickInternal(View.java:6574) at android.view.View.access$3100(View.java:778) at android.view.View$PerformClick.run(View.java:25885) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Method.invoke(Native Method) at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) at android.view.View.performClick(View.java:6597) at android.view.View.performClickInternal(View.java:6574) at android.view.View.access$3100(View.java:778) at android.view.View$PerformClick.run(View.java:25885) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) Caused by: java.lang.NumberFormatException: For input string: "" at java.lang.Integer.parseInt(Integer.java:627) at java.lang.Integer.parseInt(Integer.java:650) at com.example.calculator.MainActivity.calcNum(MainActivity.java:34) at java.lang.reflect.Method.invoke(Native Method) at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397) at android.view.View.performClick(View.java:6597) at android.view.View.performClickInternal(View.java:6574) at android.view.View.access$3100(View.java:778) at android.view.View$PerformClick.run(View.java:25885) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6669) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
該当のソースコード
java
1package com.example.calculator; 2import androidx.appcompat.app.AppCompatActivity; 3import android.os.Bundle; 4import android.view.View; 5import android.widget.Button; 6import android.widget.EditText; 7import android.widget.TextView; 8import android.widget.Toast; 9 10public class MainActivity extends AppCompatActivity { 11 Button button; 12 EditText editText1,editText2,editText3; 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_main); 18 19 button = findViewById(R.id.button); 20 editText1 = findViewById(R.id.editText1); 21 editText2 = findViewById(R.id.editText2); 22 editText3 = findViewById(R.id.editText3); 23 } 24 25 public void calcNum(View view) { 26 EditText editText1 = (EditText) findViewById(R.id.editText1); 27 EditText editText2 = (EditText) findViewById(R.id.editText2); 28 EditText editText3 = (EditText) findViewById(R.id.editText3); 29 30 String str1 = editText1.getText().toString(); 31 String str2 = editText2.getText().toString(); 32 String str3 = editText3.getText().toString(); 33 34 double num1 = Integer.parseInt(str1); 35 double num2 = Integer.parseInt(str2); 36 double num3 = Integer.parseInt(str3); 37 38 double result = ((num1 * (num2 / 100)) / num3) * 100; 39 40 TextView textView1 = (TextView) findViewById(R.id.textView); 41 String str4 = String.valueOf(result); 42 textView1.setText(str4); 43 44 if(EditText.getText().toString().isEmpty()) { 45 Toast.makeText(MainActivity.this,"文字を入力してください",Toast.LENGTH_LONG).show(); 46 } 47 } 48}
試したこと
日本だけではなく海外のサイトや動画も見ながら それらしい事は何回も試行錯誤してみたのですが、どうしてもうまくいきません。アプリが落ちてしまいます。
どなたかお力添え願えたら非常に助かります。。。
補足情報(FW/ツールのバージョンなど)
Android Studio Ver4.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/12 09:29 編集