質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1032閲覧

TextEditがnullの場合の処理について

Nishigata

総合スコア1

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2020/06/12 08:26

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Caused by: java.lang.NumberFormatException: For input string: ""

null ではなくて、空文字列””は数字に変換できない、ということで例外が出てるんだから、それをどうにかすればよろしいかと。

投稿2020/06/12 08:41

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Nishigata

2020/06/12 09:29 編集

ありがとうございます。nullを調べずに他を調べてて盲点でした。 nullをじゃなくてそれをどうにかして最初から書き直したらできました! 一応自分と同じでここにたどりついた人のために出来たコードを載せておきます。 (トーストじゃなくシンプルにしました) package com.example.numbers; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private EditText EditText1; private EditText EditText2; private EditText EditText3; private TextView TextViewResult; private Button Button1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); EditText1 = findViewById(R.id.edittext_number_1); EditText2 = findViewById(R.id.edittext_number_2); EditText3 = findViewById(R.id.edittext_number_3); TextViewResult = findViewById(R.id.textview_result); Button1 = findViewById(R.id.button_add); Button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (EditText1.getText().toString().length() == 0) { EditText1.setText("0"); } if (EditText2.getText().toString().length() == 0) { EditText2.setText("0"); } if (EditText3.getText().toString().length() == 0) { EditText3.setText("0"); } double num1 = Integer.parseInt(EditText1.getText().toString()); double num2 = Integer.parseInt(EditText2.getText().toString()); double num3 = Integer.parseInt(EditText3.getText().toString()); double sum = ((num1 * (num2 / 100)) / num3) * 100; TextViewResult.setText(String.valueOf(sum)); } }); } }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問