【问题标题】:blank number field causing fatal exception even if checked即使选中,空白数字字段也会导致致命异常
【发布时间】:2016-07-01 16:08:33
【问题描述】:

我试图确保当您忘记输入我的应用不会崩溃的数字时,我有一个名为的文本字段 仅接受数字的编辑,当我测试如果您不在文本字段中输入任何内容会发生什么时出现此错误,这是一个数字文本字段,只会在您的设备上显示数字键盘,因此您无法输入文本根本就只是数字 谁能告诉我我做错了什么?

这是错误信息: 致命例外:主要 进程:com..rhgtimecard,PID:27379 java.lang.NumberFormatException:无效的int:“” 在 com..rhgtimecard.TimeIn$2.onClick(TimeIn.java:478)

这是相关的代码块

if (login == 1) {
    int getemn = 0;
if (!edit.equals("")) {//**if you didn't enter anything but pressed set anyway this should stop the rest of the code block.
    //I tried setting this to if (edit != null) didn't work either, tried setting this to if (!edit.equals()) but it wont 
    //compile like that at all** 
    getemn = Integer.parseInt(edit.getText().toString());//**this is line 478 that throws the fatal exception error**
    String getemp = edit2.getText().toString();
    String allpass = "Passwords";
    SharedPreferences loadPass = getSharedPreferences(allpass, MODE_PRIVATE);
    String empStrng = String.valueOf(getemn);
    String passes = "pass";
    if (getemn < 13) {
        passes = "pass" + empStrng;
        g.setData4(getemn, loadPass.getString(passes, "0123"));
    }
    String[] pass = g.getData4();
    if (i == 0 && getemp.equals(pass[getemn])) {
    g.setData3(getemn);
    Logscript();
    }
    if (i == 0 && !(getemp.equals(pass[getemn]))) {
        tfone.setText("No matches found");
        tftwo.setText("Enter password");
        edit2.setText("");
        i = 1;
    }
}
}

谁能告诉我这里哪里出错了,或者如何实际检查是否有人输入了数字?

【问题讨论】:

  • 是编辑编辑文本本身还是编辑文本中的字符串。和edit2有什么区别
  • @akyirem samuel edit 只是一个数字文本字段,在相关的 xml 文件中如此定义,edit2 是一个用于输入密码的文本字段,被定义为在相关的 xml 文件中接受文本跨度>
  • 好的。我想你现在已经意识到了这个错误。您应该在 edittext 中输入的文本而不是 edittext 本身调用 equals("")。像 edit.getText().toString.equals("") 这样的东西。希望有帮助

标签: java android textfield


【解决方案1】:

试试这个:

if(!edit.getText().toString().equals(""))

【讨论】:

  • 谢谢你成功了,我对 java 还很陌生,并且一次又一次地意识到 java 就是一切都等于一切,一遍又一遍地重复这个事实,我想如果(!edit.equals("")) 会做同样的事情,但不,哈哈,我完全错了。再次感谢!
【解决方案2】:
if (!edit.equals(""))

这可能是你应该改成的那一行:

if(!edit.getText().toString().equals(""))

现在您正在检查实际编辑对象是否等于空白数字,而不是编辑框的文本。

如果您将整数默认设置为 0,您可以这样做:

getemn = Integer.parseInt(edit.getText().toString().equals("") ? "0" : edit.getText.toString() );

【讨论】:

  • 啊,好吧,我明白你在说什么,我现在就试试
  • 我的意思是说,我刚刚编辑了我的问题,如果您没有在文本字段中输入任何内容,这是一个数字文本字段,只会在您的设备上显示数字键盘,所以你根本不能只输入数字
  • 在将文本与 "" 进行比较时尝试使用 toString() 方法。
  • 好吧,这应该有效,请检查并更新您到底在哪里收到错误,即在哪一行。
  • 是的,添加 toString() 有效,我很难理解为什么 if (edit != null) {//code block} 没有像我目前一样工作明白这意味着那里什么都没有,除非只检查实际存在的文本或数字字段吗?
【解决方案3】:

将此属性添加到 XML 文件中的 EditText

android:inputType="number"

在 Java 中:

if(!editText.getText().toString()isEmpty()){

//Your content here

}

【讨论】:

  • 是的,你的答案的第一部分 android:inputType="number" 我从一开始就在 xml 中设置了这种方式,你的答案的第二部分是@Drv,你说解决了我的问题非常感谢你
  • 我很高兴它帮助了你!!快乐编码
猜你喜欢
  • 1970-01-01
  • 2014-10-21
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 2020-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多