我的应用程序可以使我点击一个按钮[复制]后崩溃

问题描述 投票:-1回答:2

这个问题已经在这里有一个答案:

我一直在编程上我自己的应用程序,但它运行到一些问题,每次我点击一个按钮(因为这个问题是在其onCreate方法)。我已经把范围缩小到什么,我认为是原因,它似乎是这一行:

int desitky_tom = Integer.parseInt(et_tom.getText().toString());

我想改变String的et_tom变量,我从editText接收到int。难道这是原因是什么?如果是的话,我要如何改变它做的应用程序不会再崩溃?

这是我的logcat错误日志:

2019-02-07 16:51:16.272 2794-2794/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mariaspocitadlo, PID: 2794
java.lang.NumberFormatException: For input string: ""
    at java.lang.Integer.parseInt(Integer.java:620)
    at java.lang.Integer.parseInt(Integer.java:643)
    at com.example.mariaspocitadlo.MainActivity$1.onClick(MainActivity.java:41)
    at android.view.View.performClick(View.java:6897)
    at android.widget.TextView.performClick(TextView.java:12693)
    at android.view.View$PerformClick.run(View.java:26101)
    at android.os.Handler.handleCallback(Handler.java:789)
    at android.os.Handler.dispatchMessage(Handler.java:98)
    at android.os.Looper.loop(Looper.java:164)
    at android.app.ActivityThread.main(ActivityThread.java:6944)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

这里是代码的其余部分:

final Button spocitat = (Button) findViewById(R.id.button);
    spocitat.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //editext Toma na desítky Toma
            EditText et_tom = (EditText)findViewById(R.id.editText);
            int desitky_tom = Integer.parseInt(et_tom.getText().toString());

            TextView txtview = (TextView)findViewById(R.id.textView_tom);
            String str = Double.toString(desitky_tom);
            txtview.setText(str);
            //editext Táty na desítky Táty
            EditText et_tat = (EditText)findViewById(R.id.editText2);
            int desitky_tat = Integer.parseInt(et_tat.getText().toString());
            //editext Kuby na desítky Kuby
            EditText et_kub = (EditText)findViewById(R.id.editText3);
            int desitky_kub = Integer.parseInt(et_kub.getText().toString());

            int desitky_vitez = 0;
            int body_tom = 0;
            int body_tat = 0;
            int body_kub = 0;
            int body_viteze = 0;
java android numberformatexception
2个回答
0
投票

从你的情况来看logcat中的输入的字符串是""。 (在你的logcat的3线)。因此它不是一个数量和不能被转换到int。你应该确保你输入一个数字,停止崩溃环绕你的代码trycatch喜欢:

try {
 EditText et_tom = (EditText)findViewById(R.id.editText);
 int desitky_tom = Integer.parseInt(et_tom.getText().toString());
} catch (Exception e) { System.out.println(e.toString()); }

除了通过输入该循环,并确保输入的文本仅是从数字数组。


0
投票

你需要附上整数解析成try / catch块,以避免NumberFormatException

例如:

int desitky_tat = 0;

try {
     desitky_tat = Integer.parseInt(et_tat.getText().toString());
} catch (NumberFormatException e) {
     //handle exception - if required
}

为什么它崩溃的原因是因为你的EditText可能当按钮被按下从而导致应用程序崩溃空或非数字文本。

© www.soinside.com 2019 - 2024. All rights reserved.